已解决请参阅答案。
我有一个在第一次调用时正在解析的递归异步调用,但我想在递归结束时解决它(我把'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);
}
非常感谢你的时间!
答案 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();
}