Event Loop事件循环
Posted dopocheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Event Loop事件循环相关的知识,希望对你有一定的参考价值。
1.首先要知道 javascript 的运行机制。文字太多请移步--
2.正是因为 JavaScript 的单线程,事件执行需要排队和循环执行。(同步任务,异步任务(宏任务(macroTask)和微任务(microTask)))
3.什么是事件循环(event loop)
为了协调事件(event)、用户交互(user interaction)、脚本(script)、渲染(rendering)、网络(netWork)、用户代理(user agent)的工作而产生的一个机制。
4.node和浏览器的event loop
其实网上讲的都不少,但没有概括性,绕来绕去的很难理解,下面是我的概括和理解有错误请大佬一定帮我指出,感谢^v^
两个在执行宏任务队列(任务中没有微任务前提下)和微任务队列时结果一致,步骤如下:
ster1:同步任务
step2:微任务
step3:宏任务
两个在执行宏任务队列(有微任务)时结果才不同,步骤如下:
node:在step3大前提下则有 循环执行所有宏任务遇到微任务加入到微任务队列,宏任务循环执行结束后执行微任务(此时的微任务是宏任务中的与上面step2中微任务不搭嘎)即宏任务先执行。
浏览器:在step2执行完后取一个宏任务压入到执行栈结束后再取一个宏任务如此循环。
我理解两个的区别并不是微任务先执行还是宏任务先执行,网上这么讲的太有误导性了。如果还不理解请继续看下面代码示例,毕竟绝知此事要躬行^v^。
更新中…………
以上是关于Event Loop事件循环的主要内容,如果未能解决你的问题,请参考以下文章
asyncio.new_event_loop 创建的事件循环挂起