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

What is the difference between $q.race to Promise.race?

我正在使用 Angularjs 1.5.7 版和在 1.5.8 版中添加的 $q.race 功能。

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

如果有不同,我应该从这里复制函数:AngularJS: $q.race() in old angular versions 它的工作原理与 $q.race?

相同

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

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

中定义的

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