我在版本1.5.8中使用Angularjs版本1.5.7和$q.race
功能。
我看到有函数Promise.race
和我的问题,如果这些函数之间有任何区别。
如果存在差异,我应该从这里复制功能:AngularJS: $q.race() in old angular versions
它会像$q.race
一样工作吗?
提前致谢并抱歉我的英文!
答案 0 :(得分:0)
核心区别在于$ q.race将调用$ rootScope。$ apply()来消化执行promise回调后可能发生的任何更改。 承诺A +规范与此有关,因为Promise.all,Promise.race在ES6 / ES2015规范中定义,不在Promise A + spec中
答案 1 :(得分:0)
JavaScript ES6规范引入了上述方法,如Promise.race
,Promise.all
等。
区别在于angular有一个内置的$q
服务,以便用promises进行管理。
这将自动触发摘要周期,以便更改可能与promises或所有相关操作返回的数据相关的所有内容。
如果您被允许使用ES6规范,您可以直接使用所有内置的Promise of JavaScript,但是您必须手动触发$ digest才能进行所有更改。
这是$ q的使用或angularjs中的标准Promises之间的主要区别之一。
此外,有很多与棱镜相关的方法与$ q集成,例如$ http,对于你的测试,你将直接用$ q处理你的生活。
所以我的建议是尽可能使用$ q。