使用Angularjs依次使用Ajax获取数据

时间:2015-09-25 14:16:12

标签: javascript ajax angularjs q

我必须从API 3加载不同的东西:

  • 用户
  • 消息

其实我做的是:

var loadAll = $q.all([
    getUsers.all(),
    getGroups.all(),
    getMessages.all()
]);

loadAll.then(function (data) {
    $scope.users = data[0];
    $scope.groups = data[1];
    $scope.messages = data[2];
};

它工作正常,但不幸的是它加载的用户,群组和消息不按照我希望的顺序......

我希望做的是加载用户,然后加载组并最终加载消息。

我无法理解如何正确地做到这一点......

我的服务回报承诺:

getUsers.all()
.then(function(data) {
    $scope.users = data;
};

但如果我这样做:

getUsers.all()
.then(function(data) {
    $scope.users = data;
    getGroups.all()
    .then(function(data) {
        // etc...
    }
};

只要用户加载而不等待其他人就解决了承诺......

我该怎么做?

1 个答案:

答案 0 :(得分:0)

链接承诺以顺序加载数据集应该有效:

getUsers.all().then(function(data) {
        $scope.users = data
        return getGroups.all()
}).then(function(data) {
        $scope.groups = data
        return getMessages.all()
}).then(function(data) {
        $scope.messages = data
});

这是因为then会返回一个承诺。