美文网首页
普通函数、promise 、setTimeout执行顺序

普通函数、promise 、setTimeout执行顺序

作者: SailingBytes | 来源:发表于2019-06-24 17:49 被阅读0次

    console.log(1)

    setTimeout(() => {

         console.log(2)

    }, 0);

    console.log(3);

    new Promise((resolve) => {

        console.log(4);

        resolve();

        console.log(5)

    }).then(() => {

        console.log(6);

    });

    console.log(7)

    1 => 3 => 4 => 5 => 7 => 6 => 2

    一个事件循环,但是任务队列可以有多个。

    创建Promise实例时是同步的,故此1、3、4、5、7是同步执行的。

    promise.then()、setTimeout都是异步执行的,都会在异步队列中等待执行。

    而promise.then()异步会放到microtask queue(微任务队列)中,microtask queue队列中的内容是在当前脚本执行完毕后立即发生的事。所以当同步Promise创建实例完成后,就执行promise.then(),然后把setTimeout放入执行堆栈中执行,故先执行Promise,再执行setTimeout。

    相关文章

      网友评论

          本文标题:普通函数、promise 、setTimeout执行顺序

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