(十一) 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函数的语法糖, 使用更为简洁, 是异步编程的最终方案
仅记录自己的学习总结,如有错误,还请评论指正~