Google ElevationServiceのリクエストをバッチしようとしています(スタックオーバーフローに関する疑問が残っています)。私は今、全く新しいPromiseオブジェクトを指摘しています。forループの変数 "then"を約束します
私は4回、別のケースでは7回、もう1回は2回ループするとします。どのように私はそのループで約束を実装するだろうか?現時点では、250 LatLngで特定のGoogle Maps DirectionsResponseの時間内に高度データを取得しようとしています。
var currentBatch = 0;
while(currentBatch < totalElevationBatches) {
getRouteElevationChartDataBatch(currentBatch, batchSize);
currentBatch++;
}
function getRouteElevationChartDataBatch(batch, batchSize) {
return new Promise(function(resolve, reject) {
var elevator = new google.maps.ElevationService();
var thisBatchPath = [];
for (var j = batch * batchSize; j < batch * batchSize + batchSize; j++) {
if (j < directions.routes[0].overview_path.length) {
thisBatchPath.push(directions.routes[0].overview_path[j]);
} else {
break;
}
}
elevator.getElevationAlongPath({
path: thisBatchPath,
samples: 256
}, function (elevations, status) {
if (status != google.maps.ElevationStatus.OK) {
reject(status);
}
routeElevations = routeElevations.concat(elevations);
});
});
}
しかし、彼らは.then()
方法で連鎖されていないため、これらの呼び出しは、まだ非同期で実行されています。チェーンの可変数をどのようにチェーンでき、いつ終了するのか知ることができますか?申し訳ありませんが、これは完全なばかげた質問です。しかし、私は
あなたは何の '.thenを使用していませんあなたは解決しない(拒否のみ)...これは近くにない救済可能なコード –
したがって、「私は完全に新しい」... – Ben
私は最近、ES6の新しい部分(約束を含む)を話しました。スピーカーは新しいイテレーターと共に約束を使用しました。それを完全にフォローしなかったかもしれませんが、おそらくこれが役に立ちます:http://www.2ality.com/2015/02/es6-iteration.html –