[Node.js]Promiseで再帰処理を使ってwhileっぽいループ処理を行う


Promiseを使ったループ処理のサンプルはいくつかあるけど、
Promiseの結果を使ってwhileっぽく処理するやり方があまりなかったのでメモ。

変なところやもっといいやり方があればコメントください


function loopUnit() {
  return new Promise(resolve => {
    /* ループ処理本体 */
    resolve(result)
  })
}

function looper() {
  return new Promise(resolve => {
    // 永久ループにならないように限界条件を入れる (optional)
    if ( /* 限界条件 */) {
      resolve()
      return
    }

    // ループ処理
    loopUnit().then(result => {
      if ( /* while条件 */ ) {
        looper().then(() => resolve())
      } else {
        resolve()
      }
    })
  }) 
}

looper()