オブジェクトのセットをループして、コールバック関数内の値を確認する必要があります。私の問題は、値が見つからない場合、単一のエラーをスローする必要があるため、これはコールバックとループの外側にある必要があるということです。
今私はこれを持っています:
for (i = 0; i < response._conflicts.length; i += 1){
del_rev = response._conflicts[i];
// retrieve a document
that.addJob(
"get",
someID,
options,
// callback
function (response) {
if (condition 1) {
if (condition 2){
console.log("gotcha");
// run a function
f.removeDocument(someID+x);
return;
}
}
},
function (err) {
that.error({ "status": 123 });
}
);
} // end of loop
// now if the loop turns out no results, I need to throw this error
that.error({ "status": 404 });
return;
私の問題は、404
コールバックチェックが条件が満たされているかどうかを検出する前に2番目のエラーがトリガーされるため、404
条件が満たされ、トリガーされると、常に2番目の関数がトリガーされることになりf.removeDocument(someID+x)
ます。
f.removeDocument(someID+x)
コールバックとループから削除し、変数をtrue / falseに設定してから、エラーをスローするか、関数を呼び出してみました。ただし、同じ結果=変数はfalseであり、コールバックでtrueに設定される前にエラーをスローします。
エラーをループ内とコールバック内に配置する必要があると思い404
ますが、ループが完了し、条件が満たされていない場合に1回だけエラーが発生するようにする方法がわかりません。
質問:
ループでトリガーされるコールバック関数内でエラーを1回スローするにはどうすればよいですか?