$ q.race与Promise.race有什么区别?

时间:2017-05-21 14:33:41

标签: javascript angularjs promise angular-promise es6-promise

我在版本1.5.8中使用Angularjs版本1.5.7和$q.race功能。

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

如果存在差异,我应该从这里复制功能:AngularJS: $q.race() in old angular versions 它会像$q.race一样工作吗?

提前致谢并抱歉我的英文!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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