12. 宏任务_微任务

执行过程:

每当执行栈为空时,就检查微任务,有则进栈执行,栈空了再去查微任务,

直到没有微任务时,去宏任务中取一个进栈执行,栈空了又开始检查微任务,循环往复,直至全都为空

宏任务:

I/O (click事件、fs.writeFile)

setTimeout

setInterval

setImmediate (nodejs)

requestAnimationFrame

微任务

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

 

posted @ 2018-12-31 13:02  耶梦加德  阅读(173)  评论(0编辑  收藏  举报