0
点赞
收藏
分享

微信扫一扫

生成器 + Promise

夕阳孤草 2022-04-14 阅读 50
javascript
function request(url) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(url)
    }, 2000)
  })
}

function* getData() {
  const res1 = yield request("张三")
  const res2 = yield request(res1 + " 李四")
  const res3 = yield request(res2 + " 王五")
  const res4 = yield request(res3 + " 赵六")
  console.log(res4)
}

// 递归执行生成器函数
function execGenerator(genFn) {
  const generator = genFn()
  function exec(res) {
    const result = generator.next(res)
    if (result.done) return result.value
    result.value.then(res => {
      exec(res)
    })
  }
  exec()
}

execGenerator(getData)
举报

相关推荐

0 条评论