想要在最终的相关动作(AngularJS)之前同时解决多个独立请求

时间:2014-07-16 20:57:26

标签: angularjs asynchronous promise

承诺是我在看到它们时能够理解的事情之一,但是当我看向别处时,理解就消失了。

我需要异步获取两个数据,然后合并结果并将其存储在cookie中。我想我可以毫不费力地实现一个vanilla承诺链。也就是说,

loadData1().then(loadData2).then(setCookie);

但是,我不需要等待一个请求完成另一个请求 。我该怎么办

(loadData1(); loadData2();).then(setCookie);

1 个答案:

答案 0 :(得分:1)

以下是使用$q.all

的简单示例
$q.all([
    (function () {
        var d = $q.defer();
        API.get({}, function (data) {
            d.resolve(data);
        });
        return d.promise;
    })(),
    (function () {
        var d = $q.defer();
        API.getMore({}, function (data) {
            d.resolve(data);
        });
        return d.promise;
    })()
]).then(function(responses) {
    //responses contains an array of all your data responses, in the order they were chained to $q
});