Прежде всего, я хочу сказать извините, потому что Я знаю так много подобных вопросов к этому. Я читал много из них, но я не мог получить ответ);jQuery отложен неправильно работает с геокодом google
Я создаю веб-приложение с Google Map.
я хотел использовать свой род «ожидания» или функцию «сон» в JavaScript ждать асинхронного геокодирования() функцию до конца,
, но после того, как прибегая к помощи некоторому времени, теперь я понимаю, что Javascript не любой из них, и Я должен использовать jQuery, отложенный для этого.
(я использую JQuery 1.8.3, и тестирование с помощью Google Chrome браузером)
так я написал свой код, как это, но он не работает.
Location.prototype.geocode = function() {
deferred = new $.Deferred();
var latLng = this.latLng;
var point = null;
geocoder.geocode({'latLng': latLng},
function(results, status) {
var point = null;
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
alert(results[0].formatted_address); // alert in callback
point = get_something_blah_blah_function() /* set return value here */
deferred.resolve();
} else {
deferred.reject();
alert('Geocder Error: no result');
}
} else {
deferred.reject();
alert('Geocoder Error: ' + status);
}
}
);
alert(deferred.state()); // alert 1
deferred.then(alert(point)); // alert 2
alert(deferred.state()); // alert 3
return point; /* return value is set in geocode callback function */
}
я ожидал я увидеть предупреждающие сообщения в этом порядке,
- 'в ожидании' (тревога 1) -> 2. адрес точки (предупреждение в обратный вызов) -> 3. ' [объект Object]»(предупреждение 2) -> 4. 'решено' (тревога 3) , потому что мой код будет ждать от отложил до тех пор, пока не будет решен,
но то, что я видел, это 1. 'в ожидании' (предупреждение 1) -> 2. «null» (предупреждение 2) -> 3. «Ожидание» (предупреждение 3) -> адрес (предупреждение при обратном вызове)
Почему он не дождался разрешения или отказался?
Я пробовал это с помощью done() и always() вместо then(), но все не удалось.
эта проблема блокирует меня в течение недели ...
Заранее спасибо!
Ваш ответ работал отлично! Как глупо я .. Большое спасибо за ваш добрый ответ. – user2106764