先说结论
不好的
// 例子1
async function foo() {
return await bar();
}
好的
// 例子2
async function foo() {
return bar();
}
// 例子3
async function foo() {
await bar();
return;
}
// 例子4
async function foo() {
const x = await bar();
return x;
}
// 例子5
async function foo() {
try {
return await bar();
} catch (error) {}
}
原因
await语句会保持当前函数的调用栈直到await后面的promise被resolved。而如果直接return,当前调用栈会马上出栈。不过请小心,这个时候try catch语法并不能捕获错误。
为了节省计算机开销,应该去掉await, 如例子2。
例子3和例子4将await与return错开了代码行,好处是可以在return处设置debugger断点,例子1在return处断点并不会等待后面的调用执行完。
此外,若想在当前函数使用try catch finally异常处理,应该使用await。
eslint规则”no-return-await“
如果是例子1则报错,其他不报错。
ps:需要内推请扫码喔
base: 上海
我们公司名为特赞,扫码看职位。 D轮独角兽创业公司,刚刚完成融资,前景光明,还在大量招人中ヾノ≧∀≦)o。
公司亮点: 保底13薪,每年普调,双休、1075弹性不打卡、macbook pro、硕士1年本科2年的落户政策、公司是设计型科技公司,妹子超多!大部分都是年轻人,非常有活力,工作氛围像大学,cxo无架子(没有独立办公室,和员工工位相同)。