跳至內容

eslint/require-await 吹毛求疵

作用

不允許沒有 await 表達式的 async 函式。

為什麼這不好?

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 的非同步函式可能不需要是非同步函式,可能是重構時的無意結果。

注意:此規則會忽略 async generator 函式。這是因為 generator 會 yield 而不是回傳值,而 async generator 可能會 yield 另一個 async generator 的所有值,而實際上不需要使用 await。

範例

此規則的不正確程式碼範例

js
async function foo() {
  doSomething();
}

此規則的正確程式碼範例

js
async function foo() {
  await doSomething();
}

參考資料

以 MIT 許可證發佈。