JQuery.When承诺不会在递归异步调用中解析

时间:2014-01-16 11:29:59

标签: jquery recursion jquery-deferred

已解决请参阅答案。

我有一个在第一次调用时正在解析的递归异步调用,但我想在递归结束时解决它(我把'return“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);
}

非常感谢你的时间!

1 个答案:

答案 0 :(得分: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();
}