我有被从ng-click
在HTML中执行以下功能:执行命令完成角
vm.items = [];
vm.moveItems = function() {
angular.forEach(vm.items,
function (item) {
$http({
method: 'PUT',
url: '/api/item_move/' + item.id}
}).then(function(response) {
Toast.success("Successfully moved item " + item.id);
vm.reload();
}, function (error) {
Toast.error("Failed to move item " + item.id, error);
});
});
};
现在的问题是,vm.reload()
是每一个成功的响应后执行,其中实际上它如果它在整个forEach
完成后执行一次就足够了。我对JS中的异步编程非常陌生,所以想知道最常用的解决方法是什么。
完美!我认为这是一个普通的JS解决方案。我看到Angular有一个'$ q'构造函数。使用它还是使用纯JS解决方案更好? – mart1n
@ mart1n是的,它是ES6中添加的JS解决方案。也可以使用'$ q'(请参阅https://docs.angularjs.org/api/ng/service/$q)最好使用'$ q'。 –
那么'/ Promise/$ q /'是唯一的改变吗? – mart1n