使用 Ajax 按顺序获取数据 Angularjs
Get data with Ajax sequentially with Angularjs
我必须从 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];
};
它工作正常,但不幸的是它加载用户、组和消息的顺序不是我希望的...
我想做的是加载用户,然后加载群组,最后加载消息。
我不明白如何正确地做到这一点...
我的服务return承诺:
getUsers.all()
.then(function(data) {
$scope.users = data;
};
但如果我这样做:
getUsers.all()
.then(function(data) {
$scope.users = data;
getGroups.all()
.then(function(data) {
// etc...
}
};
它会在用户加载后立即解决承诺,而无需等待其他...
我该怎么做?
链接按顺序加载数据集的承诺应该可行:
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
returns一个承诺。
我必须从 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];
};
它工作正常,但不幸的是它加载用户、组和消息的顺序不是我希望的...
我想做的是加载用户,然后加载群组,最后加载消息。
我不明白如何正确地做到这一点...
我的服务return承诺:
getUsers.all()
.then(function(data) {
$scope.users = data;
};
但如果我这样做:
getUsers.all()
.then(function(data) {
$scope.users = data;
getGroups.all()
.then(function(data) {
// etc...
}
};
它会在用户加载后立即解决承诺,而无需等待其他...
我该怎么做?
链接按顺序加载数据集的承诺应该可行:
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
returns一个承诺。