2014-10-23 2 views
1

제 질문은 비교적 간단합니다. 내가 반환을 기다리고 deferreds의 배열을 가지고다른 AJAX 호출 후 지연 반환

는 코드는 다음과 같다 :

var deferreds = []; 
for(var i = 0; i < 5; i==){ 
    deferreds.push(getOneResult(params)); 
} 

var deferreds = []; 
for(var i = 0; i < 5; i==){ 
    deferreds.push(getOneResult(params)); 
} 

은 "getOneResult"기능은 다음과 같습니다 : 그것은 어느 날 잘 작동

function getOneResult(params){ 
    return $.ajax({ 
    url: myURL, 
    data: params 
    }); 
} 

나는 "getOneResult"함수가 다른 Ajax 프로세스를 실행하게하고 결과를 얻기 위해이 Ajax 프로세스의 결과를 사용하기로 결정했다. 이제 문제가되는 코드는 다음과 같이 보일 것이다 :

function getOneResult(params){ 
    $.ajax({ 
    url: myOtherURL, 
    data: params, 

    success: function(){ 
     var result = arguments; 
     return $.ajax({ 
     url: myURL, 
     data: arguments 
     }); 
    } 

    }); 
} 

갑자기 "지연된"배열의 모든 항목이 "정의되지 않음"이됩니다. 내가하고있는 일이 옳지 않다고 생각하지만 연기 된 것을 반환하기 전에 아약스 프로세스를 실행하기 위해 어쨌든 존재합니까?

+0

'getOneResult' 함수가 더 이상 값을 반환하지 않습니다. – dave

답변

3

두 번째 약속을 다시 시도하십시오. 최초의 약속은 이제 랩 된 두 번째 아약스 약속을 사용할 것입니다.

function getOneResult(params){ 
    return $.ajax({ 
    url: myOtherURL, 
    data: params 
    }).then(function() { 
    return $.ajax({ 
     url: myURL, 
     data: arguments 
    }); 
    }); 
} 
+0

잘 작동합니다! 나는 .then()을 사용하려고 시도했지만 결코 이런 식으로 시도하지 않았다. 감사! – user1672065