$q.race to Promise.race 有什么区别



我正在使用 Angularjs 版本 1.5.7 和 1.5.8 版中添加$q.race函数。

我看到有函数Promise.race,我的问题这些函数之间是否有任何区别。

如果有区别,我应该从这里复制函数:AngularJS:旧角度版本中的$q.race((它会像$q.race一样工作?

提前感谢,对不起我的英语!

JavaScript ES6 规范引入了你上面描述的方法,如Promise.racePromise.all等。区别基本上在于angular具有内置的$q服务,以便通过承诺进行管理。这将自动触发摘要周期,以便更改可能与承诺返回的数据或所有相关操作相关的所有内容。如果允许你使用 ES6 规范,你可以直接使用 JavaScript 的所有内置承诺,但你必须手动触发$digest才能使所有更改发生。这是在angularjs中使用$q或标准Promise的主要区别之一。此外,angular中有很多与$q集成的相关方法,例如$http,对于您的测试,您将更容易直接使用$q治疗。所以我的建议是尽可能使用$q。

核心区别在于 $q.race 会在后台调用 $rootScope.$apply(( 来消化执行 promise 回调后可能发生的任何更改。Promise A+ 规范与此有关,因为 Promise.all、Promise.race 是在 ES6/ES2015 规范中定义的,而不是在 Promise A+ 规范中定义的

最新更新