第一点,前面已经说过, await 命令后面的 Promise 对象,运行结果可能是 rejected ,所以最好把 await 命令放在 try...catch 代码块中。
async function myFunction() {
try {
await somethingThatReturnsAPromise();
} catch (err) {
console.log(err);
}
}
// 另一种写法
async function myFunction() {
await somethingThatReturnsAPromise()
.catch(function (err) {
console.log(err);
});
}
第二点,多个 await 命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。
//以下代码 getFoo getBar getCar 是独立的异步操作(即互不依赖),被写成继发关系。这样比较耗时,因为只有 getFoo 完成以后,才会执行 getBar ,再接着执行getCar;
let foo = await getFoo();
let bar = await getBar();
let car = await getCar();
//如果以上三个方法不存在继发关系,可以让它们同时触发,这样就会缩短程序的执行时间
// 同时触发,写法一
let [foo, bar,car] &