$ promise可以执行多次或任何角度替代。
参考下面的代码。 示例代码: -
promise.then(function(greeting) {
alert('Success: ' + greeting);
}
...
if () {
resolve('Hello, ' + name + '!');
} else {
reject('Greeting ' + name + ' is not allowed.');
}
答案 0 :(得分:1)
是的,它只会执行一次,可能在angularJS中,你将无法获得替代。你可以尝试jQuery或其他一些东西。 :)
答案 1 :(得分:1)
您可以使用通知回调
notify(value) - 提供有关承诺执行状态的更新。在承诺解决或拒绝之前,可以多次调用此方法。
以下(未经测试的)代码应使用数字1-10通知十次,然后解决消息"完成计数"。
function countToTen() {
return $q(function(resolve, reject, notify) {
for (var counter=1; counter <= 10; counter++) {
setTimeout(function() {
notify(counter);
}, 1000 * counter);
}
setTimeout(function() { resolve("Done counting"); }, 10001);
});
}
编辑:作为ARedHerring通知,通知不是任何承诺标准的一部分,应被视为不良做法。
答案 2 :(得分:0)
承诺的契约是它只会解决一次,老实说,我无法想象任何有意义的执行不止一次的场景。在一个promise已经解决之后,对then
的任何后续调用将在下一个事件循环滴答时被调用,因为promise的值已经被解析并且将被缓存。
这似乎是一个XY问题。你能更详细地解释一下你想要做什么吗?
答案 3 :(得分:0)
你可以通过这个forum,托马斯告诉你如何多次解决一个承诺。
$rootScope.$apply( function() {
deferred.resolve( incremented );
});