美文网首页
js核心知识点系列——《js引擎运行机制》

js核心知识点系列——《js引擎运行机制》

作者: 轨迹枫 | 来源:发表于2019-01-04 13:02 被阅读0次

    知识点: 

    刚接触js的时候,把js执行顺序划分为同步任务和异步任务两种,同步任务先执行完之后再去执行异步任务,然后遇到了setTimeout和promise同时出现在一段逻辑里的情况,setTimeout0明明是先推入event loop任务队列,promise.then()后推入任务队列,但是代码实际运行的结果是,promise.then()先输出结果,setTimeout后输出结果。网上查询了一些资料,发现有更细微的任务划分,这也解释了我一直的疑惑。

    setTimeout(()=>{console.log(1)});

    newPromise((resolve, reject)=>{console.log(2)}).then(console.log(3));

    输出: 2 3 1

    1、macro-task(宏任务): 包括整体script代码、setTimeout、setInternal。

    2、micro-task(微任务): Promise process.nextTick()。

    3、执行一个宏任务,过程中如果遇到微任务,就将其放到微任务的【事件队列】里

    4、当前宏任务执行完成后,会查看微任务的【事件队列】,并将里面全部的微任务依次执行完(需要注意的是本轮宏任务执行完之后,会第一时间去执行本轮宏任务中的微任务,执行完成之后,再去执行下一轮宏任务。)

    相关文章

      网友评论

          本文标题:js核心知识点系列——《js引擎运行机制》

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