12. 宏任務_微任務

執行過程: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
相關文章
相關標籤/搜索