0
レストランチェーン名をキーとし、緯度と経度からなるオブジェクトを値として持つJavascriptディクショナリを作成したいと考えています。私は、次のコードを持っている:Google Maps APIを使用したJavascriptの非同期関数
// create symbol table of name-coordinate pairs
var baseLocation = new google.maps.LatLng(window.latBase, window.lngBase);
var dict = {};
var service = new google.maps.places.PlacesService(window.map);
for (var i = 0; i < arr.length; i++) {
var singleChain = arr[i];
console.log(singleChain);
var request = {
location: baseLocation,
radius: '5000',
query: singleChain
};
service.textSearch(request, function(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
dict[singleChain] = {
lat: results[0].geometry.location.lat(),
lng: results[0].geometry.location.lng()
}
}
})
// end for loop
}
問題は、私は今、GoogleのAPIリクエストが非同期ではないことを認識し、その各要求は、実際に終わる、ARR []内の唯一の最後の鎖の上に作られている、あります単一エントリ辞書。望ましい機能を得るために非同期関数を実装する最善の方法は何ですか?
あなたのソリューションが原因再帰によるタイムアウト、ないの作品のように思えます。私は同じ効果に投稿したコードにタイムアウトを追加できませんでしたか? @ Shubham – samuelli97
私は再帰関数に変更し、今は私が望むように動作します。 – samuelli97
@ samuelli97出力が非同期であることを示すために 'setTimeout'を入力します。あなたの場合、 'for'ループは結果が来るのを待っていません。 – Shubham