如何实现这样的循环:
foobar.each(function (model, j) {
// asynchrounous call etc. {in here bool get set to true}
// outside all asynchronous calls
// wait till bool is true, without stopping anything else except the loop to the top of
the _.each
})
我昨天问了一个类似的问题。但是当它不是相同的情况时,它被标记为重复。他们的解决方案没有达到同样的效果。还提出了生成器函数,看起来它可以工作。但我不能用ecmascript 5 来使用它们
我已经尝试过繁忙的循环并设置暂停但他们似乎无法工作
我也试过这个:
goto();
function goto() {
if (foo === true) {
//return true; /*I've tried with and without the return because the loops
doesn't need a return*/
} else {
goto();
}
}
goto()方法会发生什么变化。给我第一次迭代的正确结果然后执行似乎完全停止。 '富'但是在正常执行中总是被设置为true。
答案 0 :(得分:1)
你可以做的是自己实现一个foreach,执行你的条件,然后成功回调到下一个项目(但同时其余的代码将继续运行。
var iteration = 0 //count the iteration of your asynchronous process
//start looping
loop(iteration)
function loop(iteration){
var model = foobar[iteration];
//exit your loop when all iterations have finished (assuming all foobar items are not undefined)
if (foobar[iteration] === undefined){
return;
}
//do what you want
//on success callback
iteration++;
loop(iteration);
//end success callback
}