小编Box*_*cks的帖子

在AngularJS中使用q的多个链式延迟函数停止返回数据

我试图将多个延迟函数调用链接在一起,以便下一个调用获取前一个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)

angularjs q

32
推荐指数
1
解决办法
2万
查看次数

标签 统计

angularjs ×1

q ×1