很难很好地理解JavaScript承诺。就连我也在谷歌上搜索了很多不清楚的地方。能向我展示正确的承诺方式真是太棒了。
我的问题是
- promise是本机的,并产生像ajax这样的附加线程吗
- 有很多像q、deferred这样的库。它们都是原生JavaScript承诺API的包装器吗
- 如果浏览器供应商不实现本机异步承诺,这些库如何生成线程
- promise是本机的,并产生像ajax这样的附加线程吗
JavaScript是单线程,所以ajax不会产生额外的线程,也不会产生承诺。一旦运行代码的系统调用回调/处理程序代码,代码就会执行。
如果你想在JS中进行实际的多线程,请查看Service Workers
- 有很多像q、deferred这样的库。它们都是原生JavaScript承诺API的包装器吗
这是一个非常宽泛的问题,但考虑到Promises现在已经广泛可用,大多数图书馆都可能使用它们。有些人,比如蓝鸟,不使用它们,实际上胜过了本土承诺。
- 如果浏览器供应商不实现本机异步承诺,这些库如何生成线程
没有线程派生,这些库(以最简单、最通用的方式)用于包装标准XHR请求,使其成为可用,并为其提供其他类似于promise的API结构。
当我开始学习Promises时,这篇文章对我帮助最大。