Google지도 코드에서이 문제를 다루고 있지만 아키텍처 문제는 실제로 발생합니다. 어떤 시점에서 너무 많은 요청 구글 맵스는 응답을 제한하고, 그 시점에서 지연과 함께 다른 요청을하고 싶지만 function2를 다시 호출 할 때 에 "배열이 정의되지 않았습니다"라고 표시됩니다. 당신이 setTimeout()
사용하여 코드의 문자열을 사용하는 경우이 약 array
을 모르는 전역 범위에서 실행됩니다 때문입니다javascript 변수가 함수 내에서 손실 됨
function1() {
var array = JSON.parse(xmlhttp.responseText);
for (i; i < length; < i++) {
function2(array[i].one, array[i].two);
}
function3() {
//render directions
}
function2(start, end) {
directionsService.route({
origin: start,
destination: end,
},
function (result, status) {
if (status == google.maps.DirectionsStatus.OK)
function3(result);
else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
var functionStr = "function2(array[i].one" + ',' + "array[i].two)";
setTimeout(functionStr, 5000);
});
}
}