1. 程式人生 > >setTimeout與Promise的區別

setTimeout與Promise的區別

roc 函數 inf 新的 ESS object out 區別 獨立

技術分享圖片

1,4,3,2

Promise是一個micro task 主線程是一個task micro task queue會在task後面執行

setTimeout返回的函數是一個新的task macro task queue

所以Promise會先於新task執行

根據html標準 一個task執行完後 ui會重渲染

vue源碼: nextTick異步更新dom操作先判斷是否支持Promise 再判斷是否支持MutationObserve 最後是setTimeout

macroTask Queue(宏任務隊列) : setTimeout setInterval setImmediate requestAnimationFrame NodeJS的I/O

microTask Queue(微任務隊列):

promise (獨立回調)其成功/失敗回調函數相互獨立

復合回調: Object.observe, MutationObserver 和NodeJs中的 process.nextTick ,不同狀態回調在同一函數體

setTimeout與Promise的區別