我看到有一条禁止的附庸制度no-return-await``return await。
no-return-await``return await
在规则的描述中,它声明了一个return awaitadd "extra time before the overarching Promise resolves or rejects"。
return await
"extra time before the overarching Promise resolves or rejects"
但是,当我查看[MDN async函数docs时,“简单示例”显示了一个示例,其中return await没有任何说明这可能是性能问题的原因。
async
return await如eslint文档所建议的那样,是否存在实际的性能问题?
如果是这样,怎么办?
不,没有任何性能 问题 。这只是不必要的额外操作。执行可能需要更长的时间,但几乎不会引起注意。它类似于return x+0而不是returnx整数x。或更确切地说,完全等同于[毫无意义.then(x =>x)]。
return x+0
returnx
x
.then(x =>x)
它并没有真正的危害,但是我认为它是不好的风格,这表明作者没有完全理解promise和async/ await。
await
但是,在一种情况下,它会产生重要的变化:
try { … return await …; } …
await不扔拒绝,并且在任何情况下,等待着之前的承诺解决catch或finally正在执行的处理程序。一个平原return会忽略这一点。
catch
finally
return