考え方
非同期JavaScriptについて考える
- 歴史的に JavaScript は非同期関数で実装されてきた
基本的にJavaScriptは関数を上から順番に処理していきます。これを同期処理といいます。しかし、処理が長く続く場合、ユーザーが何らかのアクションを起こしても無反応という状態が発生し、ユーザーにとっては止まっている(不具合や無反応)と認識されます。これを防ぐのが非同期プログラミングです。
非同期プログラミングは、長く続く可能性のあるタスクを開始しても、そのタスクが完了するまで待つのではなく、そのタスクの実行中も他のイベントに応答できるようにする技術です。これがあるため、WEBサイトが表示されたとき、すぐにユーザーアクションをブラウザで処理することが可能になります。
しかし、これの弊害としてDOMが構築されていないのに(データがまだ処理途中)、そのDOMへのイベント処理が始まってしまい、結果的に何もイベント処理が付加されていないDOMだけが表示されてしまうことがあります。
これを防ぐために非同期関数を任意の順番で同期処理するための関数が実装されました。
非同期関数を任意の順番で同期処理するための関数非同期処理をさらに同期処理するというと元にもどったと思うかもしれませんが、正しくは非同期処理を任意の順番で同期処理させるということになります。この処理を可能にするのがasync,await関数です。
次でasync,awaitを使わない場合と使う場合のサンプルを見てみます。