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)