await 会暂停函数的执行,直到 promise 状态改变,让你的代码得到的结果,像同步一样执行
const getApi = async () => {
console.log('步骤1')
await new Promise((resolve, reject) => {
console.log('步骤2')
setTimeout(() => reject("报错了1"), 1000)
}).catch(error => console.log('error', error))
console.log('步骤3') // 暂停,因为需要上一步的promise有结果,才会执行
await new Promise((resolve, reject) => {
console.log('步骤4')
setTimeout(() => reject("报错了2"), 1000)
}).catch(error => console.log('error', error))
console.log('步骤5')
}
运行getApi()得到的结果是:then的写法,转成async/await的写法
// async/await 的写法更优雅,便于解读,避免嵌套
const getApi = async () => {
console.log('getApi1')
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
});
let result = await promise; // 等待,直到 promise返回状态
console.log('getApi1_result', result)
}
// then
const list = () => {
console.log('list1')
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
}).then(value => {
console.log('list1_result', value)
})
}
//getApi1
//list1
//getApi1_result done
//list1_result done
注意:async和await是需要搭配使用,要不然代码报错
关键字 await 让 JavaScript 引擎等待直到 promise 改变状态,并返回结果。