async、await和Promise对比

1. 先看看用 Promise 操作一个异步编程

// ES6 promise 方法
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是p1')
}, 1000)
})
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是p2')
}, 200)
})
let p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是p3')
}, 200)
})
// 想让p1完成后, 再执行P2, 再执行P3
p1.then(res => {
console.log(res)
p2.then(res => {
console.log(res)
p3.then(res => {
console.log(res)
})
})
})
/* 要么如下
p1.then(res => {
console.log(res)
return p2
})
.then(res => {
console.log(res)
return p3
})
.then(res => {
console.log(res)
})
*/

2. 再看看用 async 和 await

// 使用 ES7 async await语法糖
let a1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是a1')
}, 2000)
})
}
let a2 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是a2')
}, 40)
})
}
let a3 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是a3')
}, 40)
})
}
// 想让a1完成后再执行a2再执行a3
// 看起来更优雅,像同步一样
async function asy() {
await a1().then(res => {
console.log(res)
})
await a2().then(res => {
console.log(res)
})
await a3().then(res => {
console.log(res)
})
}
asy()

3. 区别

自家看区别,谁更优雅!

 

posted @   RHCHIK  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示