(十一) async / await

本质是对generator函数的封装

async/await相当于是generator函数的语法糖

通过generator函数进行异步请求

function request(url) {
  axios.get(url).then(res => {
    gen.next(res)
  })
}

function* generator() {
  // 获取name
  let res1 = yield request('./data1.json')
  console.log(res1);
  // 通过name获取age
  let res2 = yield request('./data2.json')
  console.log(res2);
}

let gen = generator()
gen.next()

通过async函数 , 更为简洁, 语义更强

async function request() {
  let res1 = await axios.get('./data1.json')
  console.log(res1);
  let res2 = await axios.get('./data2.json')
  console.log(res2);
}

request()

几种异步方案的对比

对比一下promise、generator、async/await

  • promise 和 async/await是专门用来处理异步操作, 而generator除了可以进行异步操作, 还有对象迭代、部署iterator接口等功能
  • promise代码相比其余两者复杂些, 可读性稍差
  • async是generator函数的语法糖, 使用更为简洁, 是异步编程的最终方案
posted @ 2021-08-02 22:46  只猫  阅读(65)  评论(0编辑  收藏  举报