Google지도 지오 코딩 API를 사용하여 businesses
배열의 10-15 개 주소 목록을 위도/경도 좌표로 변환하려는 코드는 다음과 같습니다.실패하면 javascript를 다시 실행하는 방법은 무엇입니까?
var geocoder = new google.maps.Geocoder();
var proms = businesses.map(function(address) {
return prom = new Promise(function(resolve) {
geocoder.geocode({
address: address
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
resolve({
results: results,
business: address
});
} else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
setTimeout(function() {
//HOW DO I RE-RUN THIS "new Promise"?
}, 1000);
} else {
console.log(status + ': ' + results);
}
});
});
});
Promise.all(proms);
문제는 몇 초 후 실패 약속을 다시 실행 할 수있는 방법이 있는지 궁금 그래서 구글의 API는 때때로 OVER_QUERY_LIMIT
오류를 반환 할 것입니다. 위의 예제에서 else if
문은 오류를 catch하므로 시간 초과 후 다시 실행하게하려면 어떻게해야합니까?
방금 약속을 사용하기 시작했는데 아직 잘 이해하지 못했지만 어떻게 작동하는지 알기 때문에 내 접근 방식이 완전히 잘못되었을 수 있습니다. 또한이 모든 것은 Google API가 일괄 적으로 주소를 해결하지 못한다는 가정하에 수행됩니다. 그렇지 않은 경우 알려 주시기 바랍니다.
"유망한"(말장난 의도)으로 보입니다. 저는 250P 현상금에 관한 질문으로 동일한 문제에 직면하고 있습니다. http://stackoverflow.com/questions/36266442/inaccurate-google-maps-elevation -service-response-when-splitting-a-too-large-pat 현재 코드를 가지고있는 곳은 아니지만이 코드를 사용해 보겠습니다. 내 문제에 대한 더 나은 대안이 있다면 그것에 대해 듣고 싶습니다. – Ben