检查承诺的状态并根据该状态从列表中删除该项目
Check the status of promises and based on that remove the item from list
我有一个选定项目的列表,需要从服务器中删除这些项目。因此,一旦我从用户那里得到确认,我就会向服务器发送一系列删除请求并等待它们全部完成。一旦它完成,我就会重新分配 $scope.selected
和空数组。
但我需要的是基于每个删除请求的统计信息,我想从 $scope.selected
中删除该项目。
我,e
如果第一个请求状态为 200,从列表中删除 234
和
如果第二个请求状态为 403,请不要将其从列表中删除。
如果收到任何其他请求状态,我必须调用函数 ReportError()
最好的方法是什么?
$scope.selected = [234, 455, 667];
$mdDialog.show(confirm).then(function() {
var promises = [];
angular.forEach($scope.selected, function(id, index){
var promise = $itemResource.item.remove({id: id}).$promise;
promises.push(promise);
});
$q.all(promises).then(onComplete);
});
function onComplete() {
$scope.selected = [];
$scope.getItems();
$mdDialog.hide();
}
// $itemResouce
angular.module('app').factory('$itemResource', ['$resource', function ($resource) {
return {
item: $resource('/manage/items')
};
}])
q 库有一个在 Angular 中没有实现的 allSettled 方法。您可以添加 angular-promise-extras 但是,这会给出您的解决方案并拒绝。您还可以编写一个 for 循环并传递一个增量值以确定哪个已被解决或拒绝。
您的 onComplete
回调以数组形式传递每个承诺的响应,因此您可以使用它们来检查状态?
此外,AFAIK,状态 403 将拒绝承诺,不是吗?因此,您的 onComplete 需要同时设置为 success
和 error
回调。
像这样:
$mdDialog.show(confirm).then(function() {
...
$q.all(promises).then(onComplete, onComplete);
});
function onComplete(promises) {
angular.forEach(promises, ...); // Check status, alter selected-array
$scope.getItems();
$mdDialog.hide();
}
我有一个选定项目的列表,需要从服务器中删除这些项目。因此,一旦我从用户那里得到确认,我就会向服务器发送一系列删除请求并等待它们全部完成。一旦它完成,我就会重新分配 $scope.selected
和空数组。
但我需要的是基于每个删除请求的统计信息,我想从 $scope.selected
中删除该项目。
我,e
如果第一个请求状态为 200,从列表中删除 234
和
如果第二个请求状态为 403,请不要将其从列表中删除。
如果收到任何其他请求状态,我必须调用函数 ReportError()
最好的方法是什么?
$scope.selected = [234, 455, 667];
$mdDialog.show(confirm).then(function() {
var promises = [];
angular.forEach($scope.selected, function(id, index){
var promise = $itemResource.item.remove({id: id}).$promise;
promises.push(promise);
});
$q.all(promises).then(onComplete);
});
function onComplete() {
$scope.selected = [];
$scope.getItems();
$mdDialog.hide();
}
// $itemResouce
angular.module('app').factory('$itemResource', ['$resource', function ($resource) {
return {
item: $resource('/manage/items')
};
}])
q 库有一个在 Angular 中没有实现的 allSettled 方法。您可以添加 angular-promise-extras 但是,这会给出您的解决方案并拒绝。您还可以编写一个 for 循环并传递一个增量值以确定哪个已被解决或拒绝。
您的 onComplete
回调以数组形式传递每个承诺的响应,因此您可以使用它们来检查状态?
此外,AFAIK,状态 403 将拒绝承诺,不是吗?因此,您的 onComplete 需要同时设置为 success
和 error
回调。
像这样:
$mdDialog.show(confirm).then(function() {
...
$q.all(promises).then(onComplete, onComplete);
});
function onComplete(promises) {
angular.forEach(promises, ...); // Check status, alter selected-array
$scope.getItems();
$mdDialog.hide();
}