以下のコードに関して、私の目標はFOR LOOP Bから抜け出し、FOR LOOP Aを続けることですが、コールバック関数内で行います。Node.jsのコールバック関数内の "for"ループを中断する
for(var a of arrA) {
// ...
// ...
for(var b of arrB) {
// ...
// ...
PartService.getPart(a.id, function(err, returnObj) {
break;
});
}
}
これは私に必要な結果を与えるでしょうか?もしそうでなければ、これをどのように達成できますか?
EDIT 4/28/16午前3時28分MST
- コールバック関数は変更せずに、以下の回答や、すべてのコメントの一つに基づいて
実際には非同期でありますどのようにしてNode.jsに同期コールバック関数を実装するのですか?私はループのために私のコードをリファクタリングすることを検討していますが、まだ同期コールバック関数を使ってこの方向に進むことができるかどうかは不思議です。 Underscore.jsは同期コールバック関数を使用していますが、実装方法はわかりません。
「これで私の望む結果が得られますか?」 - あなたはそれを試しましたか? – Quentin
'PartService.getPart'が最初にコールバックを取るのはなぜですか?それは非同期ですか? – Quentin
'break'はループ内にしかありません。コールバックは新しい境界を導入するので、 'for'ループの内側では考慮されません。また、コールバックが実行される前に両方のループが完了して実行されます(非同期であると仮定して)。ループは同期的であるため、非同期コード(体内で)がうまく再生されません。 JavaScriptで非同期コードフローの詳細を最初に読んでおくと便利でしょう。 –