別の関数から複数回呼び出された非同期関数が最後の反復からの呼び出しを終了したときを判断する方法が少し混乱しています。
function MainAsyncFunction(callback) {
for (var i = 0; i < 10; i++) {
SubAsyncFunction(function(success) {
if (i >= 10 && success) { // THIS IS WRONG?!
callback(true); // happens too early
}
});
}
};
function SubAsyncFunction(callback) {
SubSubAsyncFunction(function() {
callback(true);
});
}
私がやっていることは、25の宛先に制限されているGoogle Distance Matrixサービスを呼び出すことです。したがって、このサービスを複数回呼び出すには、宛先の配列を分割する必要がありますが、いつ終了するかわかりません。
コードのメインビットでは、MainAsyncFunctionのループの2回目の反復が、コールバックを実行したときにまだ完了していないことがわかります。
私の問題は、JavaScriptで非同期関数を処理するときにイベントの順序に頭を悩ませていないことだと思います...主題が通常どのように達成されるかを説明してください。