먼저 죄송합니다. 이 질문이 너무 많아서 알려드립니다. 나는 그 중 많은 것을 읽었지만 대답을 얻을 수 없었다.);jQuery 지연된 작품은 Google 지오 코드가 잘못되었습니다
Google지도로 웹 앱을 만들고 있습니다.
은 내가하지만 잠시 인터넷 검색 후
가, 지금은 자바 스크립트가되지 않는다는 것을 이해하고, 비동기 지오() 완료 기능을 기다리는 '대기'또는 자바 스크립트의 '수면'기능의 종류를 사용하고 싶었 그들 중 하나를 가지고 있고, jQuery를 사용하여 지연시켜야합니다.(내가 jQuery를 1.8.3을 사용하고 구글 크롬 브라우저를 테스트하고 있습니다)
그래서 나는 이런 내 코드를 작성,하지만 작동하지 않습니다.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 ' [개체 개체] (경고 2) -> 4. '해결'보류 '(경고 3) 가 해결 될 때까지 연기가 내 코드가 대기하므로,
하지만 내가 본 것은 1입니다' (경보 1) -> 2. 2. '널 (경보 2) -> 3.'보류 중 '(경보 3) -> 주소 (콜백의 알림)
해결되거나 거부 될 때까지 기다리지 않은 이유는 무엇입니까?
then() 대신 done() 및 always()를 시도했지만 모두 실패했습니다.
이 문제가 일주일 동안 저를 차단하고 ... 사전에
감사합니다!
당신의 대답은 완벽한 일 (무엇에
geocode()
교체는promise()
반환)! 얼마나 어리석은 지 .. 친절한 답변을 해주셔서 고맙습니다. – user2106764