簡體   English   中英

javascript-等待循環先完成

[英]javascript - wait for loop to finish first

我想先完成所有結果,然后再進行另一個循環。 我該如何實現呢?

function callback_Original(results, status) { 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
      for (var i = 0; i < results.length; i++) { 
                createMarker_Original(results[i]);
      }
    }
  }

有時總是很少有地方。

function createMarker_Original(place) {
    var photos = place.photos;
    if (!photos) {
        return;
    }

    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: map,
      position: place.geometry.location
    });



    google.maps.event.addListener(marker, 'click', function() { 
          infowindow.setContent('<div style="float:left"><img src="' + photos[0].getUrl({'maxWidth': 120, 'maxHeight': 120}) 
          + '"></div><div style="float:right; padding: 10px;"><b>Name: </b>'+  place.name +'<br/>'+
          '<b>Coordinates : </b>'+ place.geometry.location +'<br/>'+
          '<b>Type: </b>'+ type +'<br/>');
          infowindow.open(map, this);
    });
}

如何使用Promise?(ES6代碼)

function callback_Original(results, status) {
            return new Promise((resolve, reject) => {
                if (status === google.maps.places.PlacesServiceStatus.OK) {
                    for (var i = 0; i < results.length; i++) {
                        createMarker_Original(results[i]);
                    }
                    resolve();
                }else
                    reject("Places service error");
            });
        }

然后就用

callback_Original(a,b)
.then(response => {
// Loop finished, what to do nexT?
})
.catch(error => {
// Error
console.log(error);
});

使用async ,它會等待promise 參考

function callback_Original_child(results, status) { 
    return new Promise(resolve => {
        if (status === google.maps.places.PlacesServiceStatus.OK) { 
          for (var i = 0; i < results.length; i++) { 
                createMarker_Original(results[i]);
          }
        }
    });
}

async function callback_Original(results, status) { 
    try {
        await callback_Original_child(results, status);
    } catch (error) {
        console.log(error);
    }
}

callback_Original()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM