我看到有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文档建议?
如果是这样,怎么样?
答案 0 :(得分:21)
不,没有任何性能问题。这只是一个不必要的额外操作。执行可能需要更长的时间,但应该难以察觉。对于整数return x+0
,它类似于return x
而不是x
。或者更确切地说,完全等同于the pointless .then(x => x)
。
它没有造成实际伤害,但我认为这是一种不好的风格,并且表明作者没有完全理解承诺和async
/ await
。
但是,有一种情况会产生重大影响:
try {
…
return await …;
} …
await
确实会遭到拒绝,并且无论如何等待执行catch
或finally
处理程序之前的承诺解决方案。普通的return
会忽略它。