JavaScriptの非同期処理について
- 非同期処理とは(同期処理と非同期処理の違い)
- JavaScriptの言語的な特徴と生じる問題
- 非同期JavaScript(Asynchronous JavaScript)で解決する
非同期処理とは(同期処理と非同期処理の違い)。
タスクの処理方式には、同期処理と非同期処理の2タイプがあります。
同期処理は、タスクを順番に一つずつ処理していく方式であり、あるタスクが実行されている時は、他のタスクは実行されません。実行中のタスクの処理が終了してから次のタスクの実行に移ります。
非同期処理は、複数のタスクを同時に処理する方式です。同期処理では、前のタスクの実行が終わるまでタスクは実行の順番を待たなければいけませんが、非同期処理では、同時に複数のタスクが実行されるので処理の時間が短縮されます。
JavaScriptの言語的な特徴と生じる問題
JavaScriptは、同時に複数の処理を行うマルチスレッドではなく、一度に1つの処理しか行えないシングルスレッドのプログラム言語です。複数の処理を同時に行えないシングルスレッドの言語で、サーバーとやり取りする処理などを行うと、メインのタスクが中断されるのでプログラムの利便性が損なわれてしまいます。例えば、APIでサーバーにデータを要求するという処理を行うと、その処理が終わるまで他の処理が中断されるので、それまでウェブページが更新されなくなるなど不具合が発生してしまいます。
##非同期JavaScript(Asynchronous JavaScript)で解決する
上で挙げたような不具合は、非同期JavaScriptで解決出来ます。callbacksやPromise、async/awaitなどを使うことで、シングルスレッドのJavaScriptでも非同期的なタスク処理が可能で、処理時間が長いタスクの終了を待たずに別のタスクを実行することが出来ます。