[JQUERY] 자바 스크립트 비동기 반환 값 / jQuery로 지정 [중복]
JQUERY자바 스크립트 비동기 반환 값 / jQuery로 지정 [중복]
해결법
-
1.그래서,이 질문은 이상 만 시간을 요구하고 있으며, 나는 모든 사람이 (자신을 포함) 한 번이 시도하는 것이입니다.
그래서,이 질문은 이상 만 시간을 요구하고 있으며, 나는 모든 사람이 (자신을 포함) 한 번이 시도하는 것이입니다.
그냥 비동기 호출의 성격, 당신은 반환 값으로 결과를 사용할 수 있습니다. 그들은 당신이 호출의 결과를 유도 할 수있는 기능을 전달 왜 그게 전부는, 그들 중 하나를 반환 할 수 없습니다! 또한 elqTracker.pageTrack () 함수 호출이 반환은 즉시 따라서 귀하의 ReturnValue를 간단하게 정의되어 있지 않습니다 것을 알 수 있습니다.
대부분의 사람들은 (dfsq의 답변을 참조) paramater로 콜백 함수를 도입하여이 문제를 해결한다. 이 방법을 시도하고, 사실입니다 -하지만 jQuery를은 $ .Deferred가 있습니다. 이것은 당신이 당신의 자신의 비동기 로직 당신이 다음에 콜백의 수를 첨부 할 수 있습니다 약속을 반환 할 수 있습니다 :
function trackPage(){ var elqTracker = new jQuery.elq( 459 ), dfd = $.Deferred(); elqTracker.pageTrack({ success: function() { elqTracker.getGUID(function( guid ) { dfd.resolve( guid ); }); } }); return dfd.promise(); } // example use: trackPage().done(function( guid ) { alert( "Got GUID:" + guid ); });
공지 사항 이제 trackPage ()는 당신이 콜백을 첨부 할 수있는 객체를 반환? 즉시 중 하나에 첨부 할 필요가 없습니다.
var pageHit = trackPage().done(function( guid ) { alert( "Page Hit GUID:" +guid ); }); $("button").click(function() { pageHit.done( function( guid ) { alert( "Clicked on Page GUID:" + guid ); }); });
당신이 당신의 자신의 논리 반환 약속을하면 모든 AJAX 물건에 대한 인터페이스가 매우 유사해야하므로 또한, jQuery를 AJAX 모듈은 항상 아니라 약속을 반환합니다.
보조 노트로 : 당신의 VAR에 ReturnValue 어쨌든 잘못 "범위"있다는 점을 지적하고 싶습니다. 그것은 trackPage 함수의 외부 범위에 선언 할 필요가 있었다. 심지어이 수정과 함께, 개념은 여전히 작동하지 않습니다.
-
2.비동기 호출하면 코드가 작동하지 않을 쓰기를 시도하는 방법이 있기 때문에 (때문에 반환에 ReturnValue의 순간으로하며 trackCode 반환 값에 아직 정의되지 않은). 대신 당신은 trackPage에 콜백을 전달해야합니다 :
비동기 호출하면 코드가 작동하지 않을 쓰기를 시도하는 방법이 있기 때문에 (때문에 반환에 ReturnValue의 순간으로하며 trackCode 반환 값에 아직 정의되지 않은). 대신 당신은 trackPage에 콜백을 전달해야합니다 :
function trackPage(callback) { var elqTracker = new jQuery.elq(459); elqTracker.pageTrack({ success: function() { elqTracker.getGUID(function(guid) { alert(guid); // Instead of this: var returnValue = guid; // You should use your callback function callback(guid); }); } }); return returnValue; } trackCode(function(guid) { // perform some actions with guid });
from https://stackoverflow.com/questions/7779697/javascript-asynchronous-return-value-assignment-with-jquery by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 요소 내에서 마우스 위치를 얻을 수 JQuery와 (0) | 2020.10.07 |
---|---|
[JQUERY] JSON에 직렬화 폼 데이터 [중복] (0) | 2020.10.07 |
[JQUERY] 하나는 전화를 대체 여러 문자를 교체 (0) | 2020.10.07 |
[JQUERY] jQuery를 사용하여 이메일 확인 (0) | 2020.10.07 |
[JQUERY] jQuery.ajax # GET 후 예기치 않은 토큰 대장 JSON (0) | 2020.10.07 |