我有这样的代码:不能处理JavaScript-的NodeJS的异步
function onDoneFunction()
{
console.log("done!");
}
function generalQuery(generalArray, onDoneFunction)
{
function go(i)
{
if(i >= generalArray.length)
{
onDoneFunction();
}
else
{
iteratorFunction(generalArray[i], function()
{
console.log("entering callback " + i);
return go(i + 1);
});
}
}
go(0);
}
而且我iteratorFunction
看起来是这样的:
function iteratorFunction(partofquery, callback)
{
var index = generalArray.indexOf(partofquery);
collection.find(partofquery).then(function(data)
{
console("query completed " + index);
}
}
假如我的查询数组有两个元素,我看到这样的输出:
进入回调0
进入回调1个
查询完成0
查询完成1
但我想看到这一点:
进入回调0
查询完成0
enter荷兰国际集团的回调1
查询完成1
我一直在努力使循环等待迭代开始下一个之前完成。我尝试了很多东西。正如你所看到的,我也尝试过使用递归。但我无法做到这一点。你能告诉我我做错了什么吗?提前致谢。
'。那么' - 啊,所以你需要链接一些承诺,看它的外观 –
@JaromandaX你可以用我的代码示例显示吗? – jason
可能重复[如何从异步调用返回响应?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –