var data = [10,21,33,40,50,69];
var i = 0;
var dataSeq = [];
while(i<data.length){
if(data[i]%2 == 0){
store.findOne({'visibility': true},function(err, data){
dataSeq.push(i)
i++;
});
}
else{
dataSeq.push(i)
i++;
}
}
if(i==data.length-1){
console.log(dataSeq) // Should Print [1,2,3,4,5]
return res.status(200).send({ message: 'Task Completed'})
}
我想根据循环执行收集数据。 我知道如何在 Node.js 中处理异步调用。但我想要按顺序回调。 例如虽然 if 条件中有一个异步调用,但我想拖拽循环,这样我就可以将 i 的值推送到 dataSeq 中,它将产生 [1,2,3,4,5] 数组。我想要该序列,因为我的后期操作依赖于该序列。
最佳答案
我认为asyncjs#eachSeries有你需要的。
你的代码会变成这样:
async.each(data, (item, callback) => {
if(item%2 == 0){
store.findOne({'visibility': true},function(err, data){
dataSeq.push(i)
i++;
});
}
else{
dataSeq.push(i)
i++;
}
}, (err) => {
// if any of the callbacks produced an error, err would equal that error
});
关于javascript - 循环收集异步和同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041210/