些細なことを尋ねるのはばかげていると思いますが、ベストプラクティスの答えが本当に欲しいです(他に何も可能でない限り、「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
EDIT:問題を明確にするために:問題はスコープの問題でも、変数がグローバルかどうかの問題でもありませんall_the_pins
。コールバック内で調べると、それが同じ変数であることがわかります(これはにプッシュされています)。console.log
問題は、プッシュがコールバック内で発生するため、以下で実行される前に発生しないことです。