使用generator函数创建一个async函数

89 阅读1分钟
function * ti(){
  let a =yield '我是一段文字'
  console.log(a)
}
co(ti)
function co(generator){
  const g = generator()
  function handleResult(result){
    if(result.done){
      return Promise.resolve(result.value)
    }
    if(!(result.value instanceof Promise)){
      result.value = Promise.resolve(result.value)
    }
    return result.value.then(data=>{
      console.log(data)
      handleResult(g.next(data))
    })
  }
  return handleResult(g.next())
}