_.each等待直到满足布尔条件才能循环

时间:2017-10-11 09:45:23

标签: loops underscore.js

如何实现这样的循环:

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。

1 个答案:

答案 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
}