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. 区别
自家看区别,谁更优雅!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。