总结:JavaScript异步、事件循环与消息队列、微任务与宏任务

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了总结:JavaScript异步、事件循环与消息队列、微任务与宏任务脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_512_0@

前言

Philip Roberts 在演讲 great talk at JSConf on the event loop 中说:要是用一句话来形容 JavaScript,我可能会这样:

“JavaScript 是单线程、异步、非阻塞、解释型脚本语言。”
  • 单线程 ?
  • 异步 ? ?
  • 非阻塞 ? ? ?

然后,这又牵扯到了事件循环、消息队列,还有微任务、宏任务这些。

作为一个初学者,对这些了解甚少。

这几天翻阅了不少资料,似乎了解到了一二,是时候总结一下了,它们困扰了我好一段时间,就像学高数那会儿自己去理解一个概念一样。

单线程与多线程

单线程语言:JavaScript 的设计就是为了处理浏览器网页的交互(DOM操作的处理、UI动画等),决定了它是一门单线程语言。

如果有多个线程,它们同时在操作 DOM,那网页将会一团糟。

JavaScript 是单线程的,那么处理任务是一件接着一件处理,从上往下顺序执行: