async function 是 Promise 的语法糖的封装。返回的都是一个 Promise。
使用async、await有以下基本作用:
1、await 关键字可以“暂停” async function 的执行。
// 下面代码中 finished 将会在500ms之后打印在控制台上
async function (){
await interview();
console.log('finished');
}
function interview() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success');
}, 500);
});
}
2、await 关键字可以以同步的写法获取 Promise 的执行结果。
//方式一 打印出来的是promise,并不能直接打印出来执行结果
let res = new Promise((resolve, reject) => {
resolve('success')
});
console.log(res)
//方式二 代码在控制台中会打印出promise的执行结果为“success”
async function (){
let res = await new Promise((resolve, reject) => {
resolve('success')
});
console.log(res)
}
3、try-catch 可以获取 await 所得到的错误。
//方式一 得到的错误会被抛出到全局
try {
new Promise((resolve, reject) => {
reject('fail');
});
} catch (e) {
console.log("failed");
}
//方式二 得到的错误可以被准确捕获并处理,不会抛出到全局
async function(){
try {
await new Promise((resolve, reject) => {
reject('fail');
});
} catch (e) {
console.log("failed");
}
}