当前位置:  开发笔记 > 编程语言 > 正文

如何使$ q等待多个异步任务?

如何解决《如何使$q等待多个异步任务?》经验,为你挑选了1个好方法。

使用$ q服务和Angular,我编写了一个异步获取数据的函数。下面的示例有点简化,但与我的生产代码类似:

DataService.fetchData(1)
.then(function (data1) {
    this.data1 = data;
    DataService.fetchData(2)
    .then(function (data2) {
        this.data2 = data2;
        DataService.fetchData(3)
        .then(function (data3) {
            this.data3 = data3;
            doSomething(this.data1, this.data2, this.data3);
        }, function () {
            alert("failure getting data 3");
        })
    }, function () {
        alert("failure getting data 2");
    });
}, function () {
    alert("failure getting data 1");
});

假设我需要进行三个异步函数调用来获取数据,如上所述。然后,数据将通过角度视图显示。

但是,以上代码非常有缺陷。很难阅读,并且函数调用是深层嵌套的。我想写一些类似的东西,这将使三个异步函数调用并仅在所有三个函数都完成之后才执行某个函数来处理数据,并且在发生错误的情况下,应该只有一个错误处理程序函数。

还应注意,函数将返回异步数据的顺序是未知的。

如何在Angular中做到这一点?



1> Benjamin Gru..:

用途$q.all

$q.all({
   data1: fetchData(1),
   data2: fetchData(2),
   data3: fetchData(3)
}).then(function(d){
     doSomething(d.data1, d.data2, d.data3);
});

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有