【发布时间】:2015-02-07 06:30:17
【问题描述】:
我看了这个帖子:Can you resolve an angularjs promise before you return it?
我正在尝试将它应用到我的代码中,但它似乎不起作用。
这是我的代码:
var myPromise = $timeout(function () { ... }, 1000);
myPromise.then(function () { ... }); // the code in here runs
$timeout.flush(); // this causes the promise to become resolved and the code in the 1st then above to run.
// I expect this code to run immediately, since the promise is already resolved - but it doesn't
myPromise.then(function () { ... });
注意:此代码在 karma 测试函数中运行,因此 $timeout 应该可以正常工作...除非它与已解决的 Promise 有问题?
【问题讨论】:
-
$timeout 不支持 .flush。检查您的控制台日志是否有错误。 ngMock 支持它 - 你正在使用它吗?
-
是的,它适用于我的所有测试
-
看起来没有:plnkr.co/edit/sD4uCNrdMhh0Q8hQwLWp?p=preview(检查控制台)
-
您使用的是哪个版本的 Angular?在添加
.then后尝试添加$rootScope.$digest()。请注意,在常规的非单元测试代码中它可以正常工作 -
1.3.为什么要消化做任何事情?第一次刷新应该解决了承诺 - 然后第一次刷新按预期工作,因为它确实被触发了
标签: javascript angularjs promise