温故知新-Event Loop

Posted 女程序员的日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了温故知新-Event Loop 相关的知识,希望对你有一定的参考价值。

对原因的探寻不要半途而废~


console.log(1);setTimeout(()=>{ console.log(3); Promise.resolve().then(()=>{ console.log(4); })})Promise.resolve().then(()=>{ console.log(6); setTimeout(()=>{ console.log(7) })}) // 1 6 3 4 7
  1. 输出,毫无疑问

  2. 遇到setTimeout 将回调函数放到 异步执行队列中

  3. 遇到promise,是个微任务,此时同步任务队列中没有要执行的任务,所以执行then内的命令,输出6,遇到setTimeout 将setTimeout的回调函数塞到异步队列中

  4. 此时,此时只有异步任务队列中有两个setTimeout的回调函数,队列是先进先出,输出3,此时遇到了promise微任务,所以执行输出4

  5. 最后执行另一个setTimeout的回调函数,输出7

*注意:这种执行环境是浏览器环境、或者node 11版本及以上都是以上输出结果,node 11开始将event loop 的循环机制与js的保持一致了,所以要注意node版本号哦!



以上是关于温故知新-Event Loop 的主要内容,如果未能解决你的问题,请参考以下文章

js 温故而知新 webkitTransitionEnd 监听Transition动画结束事件

浏览器中的event loop, 简单了解。

DeprecationWarning: There is no current event loop loop = asyncio.get_event_loop()

DeprecationWarning: There is no current event loop loop = asyncio.get_event_loop()

Event Loop详解

事件循环(event loop)