我尝试在循环内对异步API进行多次调用,直到返回我想要的值(在这种情况下为add r21, r25
adc r22, r26
adc r23, r27
adc r24, r28
)。问题是我不想在找到该值后继续循环,并且我不想在循环之后执行这些行而没有返回它的值...但到目前为止我可以&#39得到那个工作。我想我在这里做错了什么,但是"我无法全面了解情况"。
true
答案 0 :(得分:1)
你试过Kriskowal's Q吗?有一个很好的函数叫Q#allSettled
:
Q.allSettled(promises)
.then(function (results) {
results.forEach(function (result) {
if (result.state === "fulfilled") {
var value = result.value;
} else {
var reason = result.reason;
}
});
});
所以基本上这就是它在你的情况下的工作方式:
var promises = [];
for(/* conditions */) {
promises.push(/* async call which returns a promise */);
}
Q.allSettled(promises).then(function(results) {
results.forEach(function (result) {
var value;
if (result.state === "fulfilled") {
value = result.value;
// do something with "value"
}
});
});
allSettled
只是确保then
将被执行,无论承诺是否成功,您都可以检查从异步调用中检索的对象的值。