JavaScript承诺递归返回未定义

时间:2020-01-23 08:16:17

标签: javascript es6-promise

当内部有promise时,如何返回一个递归函数, 到目前为止,这是我的代码

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))

1 个答案:

答案 0 :(得分:3)

您需要退还承诺。然后使用.then()等待承诺解决,然后在此处致电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));