我试图将多个延迟函数调用链接在一起,以便下一个调用获取前一个deferred.resolve的结果.当我将其中两个以上的调用链接在一起时,数据将停止返回.
这是角度控制器内的基本代码:
$scope.runAsync = function() {
var asyncFn1 = function(data){
var deferred = $q.defer();
$timeout(function(){
console.log("Async fn1 " + data);
$scope.outputLines.push("Async fn1 " + data);
deferred.resolve("Async fn1 " + data);
},1000);
return deferred.promise;
}
var asyncFn2 = function(data){
var deferred = $q.defer();
$timeout(function(){
console.log("Async fn2 " + data);
$scope.outputLines.push("Async fn2 " + data);
deferred.resolve("Async fn2 " + data);
},1000);
return deferred.promise;
}
asyncFn1(1)
.then(function(data){asyncFn2(data)})
.then(function(data){asyncFn2(data)})
.then(function(data){asyncFn2(data)});
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下输出:
Async fn1 1
Async fn2 Async fn1 1
Async fn2 undefined
Async …Run Code Online (Sandbox Code Playgroud)