温故知新-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 ,毫无疑问
遇到setTimeout 将回调函数放到 异步执行队列中
遇到promise,是个微任务,此时同步任务队列中没有要执行的任务,所以执行then内的命令,输出6,遇到setTimeout 将setTimeout的回调函数塞到异步队列中
此时,此时只有异步任务队列中有两个setTimeout的回调函数,队列是先进先出,输出3,此时遇到了promise微任务,所以执行输出4,
最后执行另一个setTimeout的回调函数,输出7
*注意:这种执行环境是浏览器环境、或者node 11版本及以上都是以上输出结果,node 11开始将event loop 的循环机制与js的保持一致了,所以要注意node版本号哦!
以上是关于温故知新-Event Loop 的主要内容,如果未能解决你的问题,请参考以下文章
js 温故而知新 webkitTransitionEnd 监听Transition动画结束事件
DeprecationWarning: There is no current event loop loop = asyncio.get_event_loop()
DeprecationWarning: There is no current event loop loop = asyncio.get_event_loop()