【发布时间】:2016-10-05 02:43:31
【问题描述】:
在编写测试时,我最近被 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+ 之间还有哪些不同之处?
【问题讨论】:
-
Nate_Rook。当然看起来最终的错误处理程序应该运行。你能提供一个它不工作的演示吗?
-
@Roamer-1888 - 当然,我刚刚修复了 jsfiddle 链接。 (我对 jsfiddle 上的“保存本地草稿”功能感到困惑 :()
-
@NateRook,因为它似乎是关键,您可以编辑问题以指示代码在测试中执行,并添加“jasmine”标签。
-
@Roamer-1888 好电话。看起来罪魁祸首是角模拟,而不是茉莉花,并且没有标签,所以我刚刚在问题中提到了相关上下文:它正在测试中。
标签: angularjs promise angular-promise