eslint/require-await 严格
它的作用
禁止使用没有 await 表达式的异步函数。
注意
此规则的准确性低于类型感知的 typescript/require-await 规则。如果使用类型感知规则,请始终优先选择该规则,而非此规则。
为什么这是个问题?
在 JavaScript 中,异步函数与普通函数的行为有两点重要区别:
- 返回值始终是一个
Promise。 - 可以在其中使用
await操作符。
使用异步函数的主要原因通常是使用 await 操作符,例如:
js
async function fetchData(processDataItem) {
const response = await fetch(DATA_URL);
const data = await response.json();
return data.map(processDataItem);
}不使用 await 的异步函数可能根本不需要是异步函数,也可能是重构时的意外结果。
注意:此规则忽略异步生成器函数。这是因为生成器是通过 yield 而非 return 返回值,而异步生成器可能在不实际使用 await 的情况下,产出另一个异步生成器的所有值。
示例
此规则的 错误 代码示例:
js
async function foo() {
doSomething();
}此规则的 正确 代码示例:
js
async function foo() {
await doSomething();
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"require-await": "error"
}
}bash
oxlint --deny require-await