eslint/require-await 厳密
何をするか
await 式のない非同期関数を禁止します。
メモ
このルールは、型対応の typescript/require-await ルールよりも正確性が劣ります。型対応のルールを使用している場合、常にこちらのルールよりそちらのルールを優先してください。
なぜ悪いのか
JavaScript の非同期関数は、他の関数と比較して以下の2つの重要な点で異なります:
- 戻り値は常に
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)するためであり、非同期ジェネレーターは別の非同期ジェネレーターのすべての値を生成するだけで、実際に await を使う必要がない場合があるためです。
例
このルールに違反する誤ったコードの例:
js
async function foo() {
doSomething();
}このルールに準拠する正しいコードの例:
js
async function foo() {
await doSomething();
}使い方
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします。
json
{
"rules": {
"require-await": "error"
}
}bash
oxlint --deny require-await