【问题标题】:How do Microtasks make it to the Microtask queue?微任务如何进入微任务队列?
【发布时间】:2019-05-09 19:04:39
【问题描述】:

我目前正在研究 Javascript 事件循环、并发、微/宏任务队列。

我看到当使用 setTimeout 时,浏览器的 Web Api 会处理计时器并将回调传递给宏任务队列,以通过事件循环由调用堆栈运行。

但是,对于微任务,比如 Promise,浏览器的 Web Api 是否也负责处理和传递给微任务队列?

如果不是,是什么处理这个过程?

【问题讨论】:

  • 它不是专门的 browserweb API,但是是的,promise 是环境提供的原生 API。

标签: javascript


【解决方案1】:

微任务队列在 ES 规范中指定。该规范由 JavaScript 引擎实现(大部分是浏览器)。

没有“浏览器的 Web Api”之类的东西,有 the Web Specs 定义了 setTimeout 等等,浏览器也实现了该规范。

【讨论】:

  • 快速搜索“Web Spec”并没有获得多少关于该主题的信息,但这是建议的链接之一:w3.org/standards/webdesign/script,本文的第一行:“虽然最常见的脚本语言 ECMAscript(更广为人知的 JavaScript)是由 Ecma 开发的,在浏览器中提供的大量 API 都是在 W3C 中定义的。” 似乎证实了浏览器 Web API 的存在。
  • 感谢编辑!我看到您添加了 "Web Specs" 的链接,我注意到 url 包含标签:"webapi" (w3.org/TR/?tag=webapi)。我认为您可能对 Web API 有误解,我将不得不对这个答案投反对票。
猜你喜欢
  • 2015-08-20
  • 2017-11-12
  • 2019-07-12
  • 1970-01-01
  • 2021-06-28
  • 2019-01-18
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多