“返回等待”是否存在性能问题?

时间:2017-04-11 17:57:38

标签: javascript async-await

我看到有eslint rule, no-return-await, for disallowing return await

在规则的说明中,它指出return await添加了"extra time before the overarching Promise resolves or rejects"

但是,当我查看MDN async function docs时,“简单示例”会显示一个包含return await的示例,而不会说明为什么这可能是性能问题。

return await是一个实际的性能问题,因为eslint文档建议?

如果是这样,怎么样?

1 个答案:

答案 0 :(得分:21)

不,没有任何性能问题。这只是一个不必要的额外操作。执行可能需要更长的时间,但应该难以察觉。对于整数return x+0,它类似于return x而不是x。或者更确切地说,完全等同于the pointless .then(x => x)

它没有造成实际伤害,但我认为这是一种不好的风格,并且表明作者没有完全理解承诺和async / await

但是,有一种情况会产生重大影响:

try {
    …
    return await …;
} …

await确实会遭到拒绝,并且无论如何等待执行catchfinally处理程序之前的承诺解决方案。普通的return会忽略它。