I HTMLにng-click
から実行されます、次の機能があります。実行するコマンドがで終了角度
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
が終了した後に1回実行されたとすれば十分でしょう。私はJSの非同期プログラミングにはとても新しいので、これを解決するために最もよく使われている方法を知りたいと思っています。 foreachループの外
パーフェクト!私はこれが一般的なJSソリューションだと考えています。 Angularにはこのための '$ q'コンストラクタがあります。単純なJSソリューションを使用する方が良いでしょうか? – mart1n
@ mart1nはい、ES6で追加されたJSソリューションです。 '$ q'でも可能です(https://docs.angularjs.org/api/ng/service/$qを参照)。' $ q'を使う方が良いでしょう。 –
's/Promise/$ q /'は唯一の変更ですか? – mart1n