我正在使用Javascript中的跨国框架。因此,在继续之前,我需要等待上一个查询完成。例如...
// Explicit this won't work because the length is not static
var i = [1,2,3]
doSomething(i[0], function(){
doSomething(i[1], function(){
doSomething(i[2], function(){
commitTransaction()
}
})
})
从这个示例中,我无法找到一种动态执行此操作的方法。感觉就像一个队列/递归问题,但我似乎无法破解。
还有其他人有想法吗?我也可以包装Promise,因此这也是一个选择,尽管这似乎不太同步。
最佳答案
使用async.eachSeries
。因此,您的代码将转换为:
var transaction = {...};
async.eachSeries([1, 2, 3], function(value, callback) {
doSomething(value, transaction, callback);
}, function(err) {
if(err) throw err; // if there is any error in doSomething
commitTransaction(transaction);
});