2013-06-24 3 views
0

이 코드가 있습니다.jquery 지연 연쇄 통과

function doReq() { 
    return $.get('http://localhost:5000/fun/test.php').done(
     function(data) { 
      var x = data + "uui"; 

    }).done(
     function(data) { 
      alert(x); 
     } 
    ); 
} 

doReq(); 

x가 범위를 벗어남에 따라 정의되지 않았습니다.

파이프 라인 아래의 데이터 만 따로 추가 변수를 전달하는 방법이 있습니까?

+0

jquery의 deferred() 객체를 살펴보십시오. http://api.jquery.com/category/deferred-object/ – Jose

+0

http : // stackoverflow가 중복되었습니다. com/questions/8357188 ​​/ passing-data-between-deferred-functions? – dav

답변

1

이 경우에는 resolveWith()에 전달 된 인수를 제어 할 수 없으므로 동일한 지연 객체가 아닙니다. 그러나 콜백은 정의 된 순서대로 실행되므로 함수 상단에 var x을 정의 할 수 있으며 두 콜백 범위에서 액세스 할 수 있습니다 (이러한 함수는 변수를 순차적으로 조작합니다).

그렇지 않으면 두 번째 연기가 필요하며 원하는 모든 인수로 해결할 수 있습니다.

+0

downvoter는 설명해 주길 바래서이 대답을 향상시킬 수 있습니까? – landons