Node.js:for循环中每次迭代结束时的回调函数
在Node.js中,我有一个函数,它遍历整个元素列表并执行一些数据库调用,如下所示:Node.js:for循环中每次迭代结束时的回调函数,node.js,asynchronous,callback,Node.js,Asynchronous,Callback,在Node.js中,我有一个函数,它遍历整个元素列表并执行一些数据库调用,如下所示: for(var j=0; j<elements.length; j++) { //do some database calls } for(var j=0;j如果要并行进行数据库调用: numCompletedCalls = 0 for(var j=0; j<elements.length; j++) { callDatabase(function(results) {
for(var j=0; j<elements.length; j++)
{
//do some database calls
}
for(var j=0;j如果要并行进行数据库调用:
numCompletedCalls = 0
for(var j=0; j<elements.length; j++)
{
callDatabase(function(results) {
numCompletedCalls++;
if (numCompletedCalls == elements.length)
console.log("Done all calls!");
});
}
大多数人倾向于使用库,但我强烈建议您至少手动尝试一次所有异步模式,如果您打算并行进行数据库调用:
numCompletedCalls = 0
for(var j=0; j<elements.length; j++)
{
callDatabase(function(results) {
numCompletedCalls++;
if (numCompletedCalls == elements.length)
console.log("Done all calls!");
});
}
大多数人倾向于使用库,但我强烈建议至少手动尝试一次所有异步模式
function iterateElements(elements, index, callback)
{
if (index == elements.length)
return callback();
// do database call with element
var ele = elements[index];
callDatabase(function(results) {
iterateElements(elements, index+1, callback);
});
}
iterateElements(elements, 0, function() {
console.log("Done all calls!");
});