の非同期を処理することができません:は、私はそのようなコードを持っている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);
}
}
は、私のクエリ配列は、2つの要素を持っていると仮定すると、私はそのような見出力:
入るコールバック0
クエリが0
を完了し、コールバックに入る:1
クエリが0
クエリが1
を完了した。しかし、私はこれを見しようとしている完成入るコールバック
enter INGのコールバック1
問い合わせは、私は次のいずれかを開始する前に終了する反復のためのループ待機をしようとしてきた1
を完了しました。私は多くのことを試みました。ご覧のとおり、再帰を使ってみました。しかし、私はそれを達成できません。私が間違っていることを私に見せてください。前もって感謝します。あなたのコード
function onDoneFunction() {
console.log("done!");
}
function iteratorFunction(partofquery, index) {
return collection.find(partofquery).then(function(data) {
console("query completed " + index);
});
}
function generalQuery(generalArray, onDoneFunction) {
function go(i) {
if (i < generalArray.length) {
console.log("performing query " + i);
return iteratorFunction(generalArray[i], i).then(function() {
return go(i + 1);
});
}
}
go(0).then(onDoneFunction);
}
へ
'。それから、あなたはそれを見ていくつかの約束を結ぶ必要があります。 –
@JaromandaX私のコードを使って例を示してください。 – jason
[非同期呼び出しから応答を返すにはどうすればよいですか?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –