美文网首页
一个小例子瞧破js微任务

一个小例子瞧破js微任务

作者: 黑天月 | 来源:发表于2020-04-10 15:07 被阅读0次
setTimeout(()=>{
    console.log('timeout');
});

Promise.resolve().then(
    ()=>{
        console.log(1);
    }
).then(
    ()=>{
        console.log(2);
    }
).then(
    ()=>{
        console.log(3);
    }
);

Promise.resolve().then(
    ()=>{
        console.log('a');
    }
).then(
    ()=>{
        console.log('b');
    }
).then(
    ()=>{
        console.log('c');
    }
);

这个例子的输出为“1”,“a”,“2”,“b”,“3”,“c”,“timeout”。
因为任务的执行顺序是宏任务,微任务交替执行的,所以作为下一次宏任务的“timeout”最后执行。
微任务与宏任务的运行机制不同,运行微任务时碰到的微任务会直接加到本次微任务队列的尾部,直到该队列没有可执行的微任务。

微任务的队列大致变化:
1, a
a, 2
2, b
b, 3
3, c
c

所以用严格执行顺序的Promise要写在一条链上

相关文章

网友评论

      本文标题:一个小例子瞧破js微任务

      本文链接:https://www.haomeiwen.com/subject/qbyrmhtx.html