angularjs – 如何检查Angular $q promise是否已解决

前端之家收集整理的这篇文章主要介绍了angularjs – 如何检查Angular $q promise是否已解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我理解,通常只使用一个then()调用和链行为时使用promises的附加连续代码

但是,我想启动一个promise封装的异步调用,然后单独启动3秒$ timeout(),所以我可以采取UI操作,只有如果原始promise尚未完成。 (我预计这只会发生在缓慢的连接,3G上的移动设备等)

给定一个承诺,我可以检查它是否完整或没有阻塞或等待?

我认为你最好的选择是,(不修改Angular源和提交拉请求)是保持一个局部标志,如果承诺已解决。每次你设置你感兴趣的承诺,并将其标记为完成在then()为原始的承诺重置它。在$ timeout然后()检查标志知道是否原始的承诺已经解决了还是没有。

这样的东西:

var promiseCompleted = false;
promise.then(function(){promiseCompleted=true;})
$timeout(...).then(function(){if(!promiseCompleted)doStuff()})

Kris Kowal的实现包括检查promise的状态的其他方法,但似乎Angular的$ q的实现不幸地不包括这些。

猜你在找的Angularjs相关文章