Angular的$ q与Promises / A +规范有何不同?

时间:2016-09-26 17:38:57

标签: angularjs promise angular-promise

在编写测试时,我最近被Angular $ q在then块中抛出异常的行为所激怒:(jsfiddle

 const r = $q.reject(new Error());
 r.then(null, () => {
   throw new Error();
 }).then(null, () => {
   // This does not get run!
   // Instead, an exception is thrown on the event loop somewhere
 });

我曾假设$ q遵守Promises / A +,但看起来并非如此。 (Promises/A+ 2.2.7.2

$ q和Promises / A +之间还有哪些其他差异?

1 个答案:

答案 0 :(得分:1)

Angular $ q是Promises / A +兼容; Promises / A +一致性测试是Angular持续构建的一部分。

我在问题中描述的行为是misfeature。 Promises / A +在技术上并不描述$exceptionHandler的行为,因此它不会违反合规性,但它确实使这些案例无法测试。 Angular团队计划在1.6中删除它。

感谢@Phil指出我正确的方向。