Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery NodeJS循环等待回调_Jquery_Node.js_Loops - Fatal编程技术网

Jquery NodeJS循环等待回调

Jquery NodeJS循环等待回调,jquery,node.js,loops,Jquery,Node.js,Loops,如何在for循环中等待,直到收到回调,然后继续for循环 这是我的循环: for(var i = 0; i < offer.items_to_receive.length; i++) { console.log("Waiting for callback..."); doSomething(function(data) { console.log("Got data from callback! " + data); }); console

如何在for循环中等待,直到收到回调,然后继续for循环

这是我的循环:

for(var i = 0; i < offer.items_to_receive.length; i++) {
    console.log("Waiting for callback...");
    doSomething(function(data) {
        console.log("Got data from callback! "  + data);
    });
    console.log("Continue for loop now.");
}
for(变量i=0;i

感谢您的投入

如果调用的方法是异步的,您可能无法使用循环,相反,您可以使用基于递归的解决方案,如

功能x(项目,i){
i=i | | 0;
如果(i>=items.length){
返回
}
log(“等待回调…”+i);
剂量测量(功能(数据){
log(“从回调中获取数据!”+数据);
如果(i==items.length-1){
snippet.log(“已完成”);
}否则{
x(项目,i+1)
}
});
}
//异步方法的一个示例实现
var计数器=0;
功能剂量测定法(cb){
setTimeout(cb.bind(窗口,计数器++),100)
}
x([1,2,3,4])

发电机是您的朋友:

但是,如果您还没有准备好ES6,@Arun p Johny的帖子的概念可能会有所帮助:

function getData(items) {
  if (!items.length) {
    return;
  }
  doAsyncCall(items[0], function(data) {
    getData(items.slice(1))
  });
}

您可能无法在for循环中执行此操作,因为
doSomething
看起来是一种异步方法,有什么其他选项可以像我所希望的那样执行此操作@ArunPJohny-尝试一下像“做工很好”这样的东西,非常感谢@请不要调用函数
x