執行過程:node
每當執行棧爲空時,就檢查微任務,有則進棧執行,棧空了再去查微任務,spa
直到沒有微任務時,去宏任務中取一個進棧執行,棧空了又開始檢查微任務,循環往復,直至全都爲空code
宏任務:blog
I/O (click事件、fs.writeFile)事件
setTimeoutit
setIntervalio
setImmediate (nodejs)console
requestAnimationFramefunction
微任務class
process.nextTick (nodejs)
Promise.then().catch()
console.log(1); setTimeout(function () { console.log(2); }, 0) new Promise((resolve, reject) => { reject(true); setTimeout(function () { resolve(false); }, 1000); new Promise((resolve, reject) => { resolve(false); }).then(() => { console.log(6); }, () => { console.log(7); }); }).then(() => { console.log(3); }).catch(() => { console.log(4); }); console.log(5); // 1 5 6 4 2