一眼看懂
promise
与async
await
// promise方法
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是p1')
}, 4000)
})
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);
})
})
})
async
和await
在干什么,async
用于申明一个function
是异步的,而await
可以认为是async wait
的简写,等待一个异步方法执行完成。
// async await语法糖
let a1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('我是a1')
}, 4000)
})
}
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();
-
async
表示这是一个async
函数,await
只能用在这个函数内部 -
await
表示在这里等待promise
返回结果后,再继续执行 -
await
后面跟着的应该是一个promise
对象(当然,其他返回值也没关系,只是会立即执行,不过那样就没有意义了...) -
await
等待的虽然是promise
对象,但不必写.then(...)
,直接可以得到返回值
网友评论