2014-01-16 2 views
0

해결됨 답변보기.JQuery. 재귀 비동기 호출에서 해결되지 않을 것이라고 약속하는 경우

첫 번째 호출에서 해결되는 재귀 비동기 호출이 있지만 재귀 (여기서 "반환"1 " '넣을) 끝에 그것을 해결하고 싶습니다. 어떤 도움이 필요합니까?

function parent(){ 
    asyncCall().then(function(result){ 
     console.log(result); 
    }); 
} 


function asyncCall(parameters){ 
    var promises = []; 
    promises.push(
      anotherAsyncFunction(Parameters).then(function (returnedData) { 
       if (returnedData==1) { 
        return "1"; //Should resolve here. 
       } else { 
        parameters.modify(returnedData); 
        promises.push(asyncCall(parameters)); //Why resolves here?? 
       } 

      }) 
     ); 
    return jQuery.when.apply(null, promises); 
} 

시간 내 주셔서 감사합니다. 을 바탕으로

답변

0

: AngularJS, promise with recursive function

내가 연기 된 객체에 대한 약속의 배열에서 변화를 해결했습니다 통해 모든 방법을 통과시켰다. 이제 작동 중입니다.

function asyncCall(parameters, deferred){ 
    if (!deferred) { 
     deferred = jQuery.Deferred(); 
    } 

    anotherAsyncFunction(Parameters).then(function (returnedData) { 
     if (returnedData==1) { 
      return deferred.resolve("1"); 
     } else { 
      parameters.modify(returnedData); 
      asyncCall(parameters, deferred); //Passing deferred object 
     } 
    }); 
    return deferred.promise(); 
} 
관련 문제