以前想一个方法后再执行另一个方法的方法有回调函数和promise,现在async/await是写异步代码的新方式。
async/await是基于promose实现的,他不能用于普通的函数,
async/await与promise一样,是非阻塞的
async/await使得异步代码看起来像同步代码。
普通回调
function p1(){
console.log('p1')
p2()
}
function p2(){
console.log('p2')
}
promise回调
window.onload = () => {
p1.then(() => {
p2
})
}
let p1 = new Promise((resolve, reject) => {
resolve(console.log('p1'))
})
let p2 = new Promise((resolve, reject) => {
resolve(console.log('p2'))
})
async/await
window.onload = () => {
p3()
}
let p1 = () => {
console.log('p1')
}
let p2 = () => {
console.log('p2')
}
const p3 = async () => {
let p11 = await p1();
let p22 = await p2();
console.log('p3')
}
在多个函数顺序调用时推荐使用async/await,原因有:
1.使用async函数可以使代码简洁很多,不需要像promise一样需要些then,不需要写匿名函数Promise的resolve值,避免了嵌套代码。
2.错误处理: asnyc用同步的写法使得可读性更强,同时方便try/catch捕获异常, asnyc有明确的前后关系,可读性好。