我有這樣的代碼:不能處理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) –