美文网首页
一个小例子瞧破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