Javascript承诺不明确



很难很好地理解JavaScript承诺。就连我也在谷歌上搜索了很多不清楚的地方。能向我展示正确的承诺方式真是太棒了。

我的问题是

  1. promise是本机的,并产生像ajax这样的附加线程吗
  2. 有很多像q、deferred这样的库。它们都是原生JavaScript承诺API的包装器吗
  3. 如果浏览器供应商不实现本机异步承诺,这些库如何生成线程
  1. promise是本机的,并产生像ajax这样的附加线程吗

JavaScript是单线程,所以ajax不会产生额外的线程,也不会产生承诺。一旦运行代码的系统调用回调/处理程序代码,代码就会执行。

如果你想在JS中进行实际的多线程,请查看Service Workers

  1. 有很多像q、deferred这样的库。它们都是原生JavaScript承诺API的包装器吗

这是一个非常宽泛的问题,但考虑到Promises现在已经广泛可用,大多数图书馆都可能使用它们。有些人,比如蓝鸟,不使用它们,实际上胜过了本土承诺。

  1. 如果浏览器供应商不实现本机异步承诺,这些库如何生成线程

没有线程派生,这些库(以最简单、最通用的方式)用于包装标准XHR请求,使其成为可用,并为其提供其他类似于promise的API结构。


当我开始学习Promises时,这篇文章对我帮助最大。

最新更新