나는 사소한 것을 묻는 것이 어리석은 짓을하지만 실제로는 모범 사례 응답을 원한다. (나는 그게 가능하지 않다면 "setTimeout"해결책을 찾지 않을 것이다.).자바 스크립트 콜백 타이밍
빠른보기 : 콜백 내에서 푸시 할 배열이 있습니다. 배열을 채운 다음 콜백 외부에서 사용하고 싶습니다.
실용 : 나는 도시의 배열을 가지고 있는데, 나는 그것들을 Google의 API로 지오 코딩하고 배열을 결과 LatLng으로 모두 채우고 싶다. 나중에 나는 그들과 함께 표식 개체를 만들고, 그것을 클러스터러에 추가 할 것이다.
coder = new google.maps.Geocoder();
$places = ['Truro, NS', 'Halifax, NS', 'Sydney, NS', 'Dartmouth, NS'];
all_the_pins = Array();
for(i in $places){
var $place = $places[i];
coder.geocode({address:$place}, function(res, stat){
switch(stat){
case 'OK':
all_the_pins.push(res[0].geometry.location);
break;
}
});
}
console.log(all_the_pins);
편집이 :이 문제를 명확히하기 위해 : 당신은 콜백 내에서 all_the_pins
을 조사한다면 을 문제는 all_the_pins
변수가 글로벌인지 아닌지 여부 또는 범위의 문제가 아닙니다, 당신은 그것을 볼 것이다 동일한 변수 (푸시 할 변수)입니다. 문제는 콜백 내에서 푸시가 발생하기 때문에 console.log
이 실행되기 전에 발생하지 않는다는 것입니다.
무엇이 문제입니까? 당신의 위치는'all_the_pins' 배열에 누적 될 것입니다. 배열을 전역 적으로 선언하면 전역 적으로 사용할 수 있습니다. – jfriend00
단순히 배열을 전역 var로 선언 하시겠습니까? 'var all_the_pins = [];'문서 상단에 있습니다. 모든 범위에서 액세스 할 수 있습니다. –
나는 동의한다, 나는 그 질문을 이해하지 못한다 ... – Jonathan