Javascript 承诺递归 return 未定义

Javascript promise recursion return undefined

当里面有 promise 时,你如何 return 一个递归函数, 到目前为止,这是我的代码

loop = (i) => {
  new Promise((resolve) => {
      setTimeout(() => {
        resolve(i)
      }, 100)
    })
    .then((res) => {
      if (res <= 5) {
        return loop(res + 1)
      } else {
        return true
      }
    })
}
console.log(loop(0))

你需要return承诺。然后使用.then()等待promise resolve,并在那里调用console.log()

loop = (i) => {
  return new Promise((resolve) => {
      setTimeout(() => {
        resolve(i)
      }, 100)
    })
    .then((res) => {
      if (res <= 5) {
        return loop(res + 1)
      } else {
        return true
      }
    })
}
loop(0).then(result => console.log(result));