Evevt Loop 事件迴圈

2021-09-06 16:30:17 字數 703 閱讀 6576

今天在看es6的promise的時候,看了乙個很有意思的面試題,牽扯到了settimeout的執行順序,總結一下

貼一下面試題的鏈結excuse me?這個前端面試在搞事! - liril的文章 - 知乎

同步和非同步任務分別進入不同的執行"場所",同步的進入主線程,非同步的進入event table並註冊函式。

當指定的事情完成時,event table會將這個函式移入event queue。

主線程內的任務執行完畢為空,會去event queue讀取對應的函式,進入主線程執行。

上述過程會不斷重複,也就是常說的event loop(事件迴圈)。

settimeout

如果以0毫秒的超時時間來呼叫settimeout(),那麼指定的函式不會立即執行,相反會把它放到佇列中去,等到前面處於等待狀態的事件處理程式全部執行完成後,再「立即」呼叫它。(settimeout和setinterval經常有不守時的時候)。

settimeout並不是真正的非同步操作,只是把想執行的**放到ui佇列中,在未來執行

es6中的promise,裡面的函式是直接執行的,比settimeout執行的早

python 結束迴圈事件 如何終止事件迴圈

首先,您不需要啟動任何事件迴圈。package提供對執行器的直接訪問,threading允許您啟動單個執行緒 raw thread import threading background task threading.thread target update contacts,kwargs loop...

QT事件迴圈

什麼是自發事件?哪些型別的事件可以被propagated 或compressed?posting and sending 事件之間有何不同?什麼時候應該呼叫 accept 或是ignore 如果這些問題你還不是很了解,那麼繼續看下去。事件起源 定製事件型別 到現在為至,我們所說的內容不僅僅適用於ke...

node events事件迴圈

引入event模組 引入模組方式一 引入events模組 var events require events 建立eventemitter var eventemitter new events.eventemitter 引入模組方式二 var eventemitter require events...