在编写测试时,我最近被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 +之间还有哪些其他差异?
答案 0 :(得分:1)
Angular $ q是Promises / A +兼容; Promises / A +一致性测试是Angular持续构建的一部分。
我在问题中描述的行为是misfeature。 Promises / A +在技术上并不描述$exceptionHandler
的行为,因此它不会违反合规性,但它确实使这些案例无法测试。 Angular团队计划在1.6中删除它。
感谢@Phil指出我正确的方向。