我有被從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