Hum*_*ons 2 javascript node.js
假设我有以下代码,
function someFunction(){
var i = 0;
while (i < 10){
someAsyncProcess(someField, function(err, data){
i++;
// i want the next iteration of the while loop to occur after this
}
}
}
Run Code Online (Sandbox Code Playgroud)
someAsyncProcess 运行,并递增“i”。
但是,由于 JavaScript 的异步特性,while 循环在 i = 10 之前运行了数千次。如果我希望 while 循环恰好运行 10 次,该怎么办?如果我希望 while 循环仅在回调函数执行完成后才执行内部代码怎么办?
是否可以在没有 setTimeout 函数的情况下做到这一点?
请注意,我对 JavaScript 还比较陌生,所以如果我错误地使用了任何术语,请纠正我。
while是同步的。您不能让它等到异步进程完成。在这种情况下不能使用while循环。
相反,您可以将代码放入函数中,并在满足条件时再次调用函数本身。
例子:
function someFunction() {
var i = 0;
function step() {
if (i < 10) {
someAsyncProcess(someField, function(err, data) {
i++;
step();
});
}
}
step();
}
Run Code Online (Sandbox Code Playgroud)
有相当多的库为此提供了现成的解决方案。您可能还想研究一下一般的Promise 。
| 归档时间: |
|
| 查看次数: |
1612 次 |
| 最近记录: |