inside forループが真であるたびにルートを取得したい。Forループ内部での非同期約束
それは予想通りif HIT ${j}
を示し、その後getSinglePart(partPath)
火災、予想通りlog 1
示し、それは右log 1
後getSinglePart(partPath).then(res)
にres
を返す必要があります。
しかし、getSinglePart().then((res))
は、forループの終了後すぐにすべてのルートを表示します。
なぜそれは約束を返すのですか?それを修正する方法は?事前に
感謝:)
function getSinglePart(partPath){
return new Promise((resolve, reject) => {
console.log('log 1');
let tempDirectionsService = new google.maps.DirectionsService;
let tempElevationService = new google.maps.ElevationService;
let tempDirectionsRenderer = new google.maps.DirectionsRenderer({draggable: true, map: store.getState().map});
tempDirectionsService.route({
origin: partPath[0],
//waypoints: waypointsArray,
destination: partPath[partPath.length-1],
travelMode: 'WALKING',
avoidTolls: true
}, (res, status) => {
resolve(res);
});
});}
function getParts(response){
let distances = [];
let legs = response.routes[0].legs;
for(let i=0; i<legs.length; i++){
let steps = legs[i].steps;
let distanceCounter = 0;
let partsCounter = 0;
let startNextIndexes = [0];
for(let j=0; j<steps.length; j++){
distances.push(steps[j].distance.value);
distanceCounter += steps[j].distance.value;
if(distanceCounter > 100000 || j === steps.length-1){
startNextIndexes.push(j+1);
let partPath = [];
distanceCounter = 0;
console.log(`if HIT ${j}`);
for(let k=startNextIndexes[partsCounter]; k<=j; k++){
for(let l=0; l<steps[k].path.length; l++){
partPath.push(steps[k].path[l]);
}
}
getSinglePart(partPath).then((res) => {
console.log('then');
console.log(res);
});
}
}
}}
ループは約束を待ちませんか? – Bergi
@Bergiいいえ、それは自分の人生を生きています:D私は以下のコメントからリンクを読むようにしようとします;) – gdziemojkomp
あなたが達成しようとしているものについて詳しく述べることもできます。おそらく、実際には各反復が完了するのを待つ必要はなく、単にループの外側で処理を行うこともできます。 – Maksym