【Angularjs】PromiseでforEachで同期処理で順次実行する
こちらのコードを実行すると、testが1秒間隔で3回順次実行される。
var test = function() { var deffered = $q.defer(); $timeout(function() { deffered.resolve(); }, 1000); return deffered.promise; }; var deffered = $q.defer(); var promise = deffered.promise; promise .then(function() { var deffered = $q.defer(); var promise = deffered.promise; for (var i = 0; i < 3; i++) { // [1, 2, 3].forEach(function(v) { // forEachも一緒 promise = promise.then(function() { return test(); }) .then(function() { var deffered = $q.defer(); deffered.resolve(); return deffered.promise; }); }); deffered.resolve(); return promise; }); deffered.resolve();
やりたかったのはこれだけ。以上です。