JavaScript のコードで、最近、await, async をよく目にする。await は async の中で使う仕様になっており、それがなぜか分からなかったので、ちょっと調べたみた。
[JS]なぜawaitはasync関数の中にしか書けないのか - Qiita
などの記事を読んだところ、以下のように理解した。
- 関数内で await を使うと、その関数は非同期になる。処理が await の直前まで進み、そこで一旦、関数が終了する感じ。
- つまり、await を使うと、その関数は非同期になるので、関数定義に async を付与する必要がある。
ざっくりと言うと、JavaScript の仕組み上、await は async の中で使う必要があるということかな。
よく使うパターンとして、fetch 関数 (非同期関数) の結果を await で待つことがあるが、この処理を包含する関数定義には、上述の理由で async を付与する必要がある。
つまり、非同期関数の結果を待ちたいので await する ⇒ await を使ったので、その処理を包含する関数定義に async を付ける、という感じだと思う。