JavaScriptで非同期処理を再帰的かつ逐次処理しようとしています。
下記のサンプルコードで再帰部分は逐次処理になったのですが、最初のrecursiveFuncに続くthen部分が1つ目の再帰処理が終わった時点で実行されてしまいます。全ての再帰処理が終わったら"done"と表示するにはどうしたら良いでしょうか?
JavaScript
1var arr = ["1","2","3","4","5","6","7","8","9","10"]; 2 3recursiveFunc(arr).then(function(){console.log("done");}); 4 5function recursiveFunc(arr){ 6 while (arr.length > 0 ) { 7 return new Promise((resolve,reject)=>{ 8 var tmpArr = arr.splice(0,3); 9 var entryTimestamp = Date.now(); 10 setTimeout(function(){logger(tmpArr,entryTimestamp);resolve()},1000); 11 }).then(function(){recursiveFunc(arr)}); 12 } 13} 14 15function logger(arr, timestamp){ 16 console.log(JSON.stringify(arr)+timestamp); 17}

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/21 08:50 編集
2017/08/21 09:55
2017/08/22 04:37
2017/08/22 04:46