【发布时间】:2017-01-17 16:53:34
【问题描述】:
我正在尝试编写一个在循环中调用异步函数的函数,并且只有在循环完成后,才能使用结果调用回调。
类似这样的:
function foo(cb){
var result;
for(var i=0; i < 999; i++){
asyncFunction(i, function(val){
do something with result
});
}
cb(result);
}
但我看到它在真正完成从所有asyncFunction 调用返回之前到达cb(result);。
在调用cb 之前,可以做些什么让它等待完成循环?承诺会有帮助吗?
【问题讨论】:
-
是的。承诺是正确的方式
-
但是我不会遇到同样的问题吗?什么将表明承诺已兑现? @Rajesh
-
以下是使用回调的示例JSFiddle。你必须使用 promise 来做类似的事情
-
我担心将我的函数从循环更改为递归可能会导致堆栈溢出,循环的范围可能非常大。 @Rajesh
标签: javascript asynchronous syntax callback