Я пытаюсь получить данные для нескольких Google Адресов, а затем нарисовать маркеры для каждого места на карте. Я пытаюсь использовать обещания дождаться, пока данные для каждого места не будут получены до обновления карты. Это то, что у меня есть:Как я могу использовать обещания получить данные в Google Адресах?
var service = new google.maps.places.PlacesService(map),
promises = [],
promise = '',
searchCallback = function(results, status) {
if(status == google.maps.places.PlacesServiceStatus.OK) {
for(var i = 0; i < results.length; i++) {
var place = results[i];
// this works
console.log(place);
// resolve the promise
promise.resolve(place);
}
}
}
$('li').each(function(index) {
promise = $.Deferred(),
var lng = $(this).attr('data-longitude'),
lat = $(this).attr('data-latitude'),
name = $(this).text(),
latLng = new google.maps.LatLng(lat, lng),
request = {
location: latLng,
radius: '500',
query: name
};
// push promise into array
promises.push(promise);
// get data about place
service.textSearch(request, searchCallback);
}
// when all promises are complete
$.when.apply($, promises).then(function(data) {
console.log(data);
});
Мой PlacesService
работает нормально. Я могу console.log(place)
, и я вижу объект, возвращенный Google, но когда я пробую console.log(data)
в своем обратном вызове $.when
, data
возвращает undefined. Казалось бы, мои обещания не работают должным образом. Что мне не хватает?