Skip to content
← Back to rules

eslint/require-await 严格

An auto-fix is available for this rule.

它的作用

禁止使用没有 await 表达式的异步函数。

注意

此规则的准确性低于类型感知的 typescript/require-await 规则。如果使用类型感知规则,请始终优先选择该规则,而非此规则。

为什么这是个问题?

在 JavaScript 中,异步函数与普通函数的行为有两点重要区别:

  1. 返回值始终是一个 Promise
  2. 可以在其中使用 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

参考资料