Javascript之什么是EventLoop

Javascript之什么是EventLoop,第1张

EventLoop简单来说就是事件循环,是浏览器或Node解决单线程运行时不会阻塞的一种机制。 什么是同步、异步?

计算机中同步是指连续性的动作,只有等上一步运行完后下一步才能继续执行。

计算机中异步就是指在同一时间执行两件事情,通常可以利用计算机的多线程实现异步。

为什么JS是单线程却可以异步执行(EventLoop机制执行过程)?

JS确实是单线程语言,,但是浏览器是多线程,因此异步任务就可以借用浏览器的多线程和JS的单进程执行机制实现事件循环机制,进而实现异步。具体执行顺序如下:

代码开始执行,创建一个全局调用栈,script作为宏任务开始执行执行过程中,遇到同步任务则将同步任务调入主线程立即执行,遇到异步任务则根据异步任务类型分别在微任务Event Table和宏任务Event Table中注册回调函数;当异步任务的触发条件满足,将回调函数分别压入宏任务Event Queue,微任务Event Queue中;当主线程同步任务执行完毕,查看微任务队列,若存在微任务则将微任务队列全部执行;若无微任务,查看宏任务队列,执行第一个宏任务,宏任务执行完后,查看微任务队列,重复上述 *** 作,直至宏任务队列为空; 常见异步任务: DOM事件AJAX请求定时器setTimeout和setIntervalES6中Promise

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1324675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存