JavaScriptの非同期処理についてサンプルコード付きで解説!

javascrip-async
  • URLをコピーしました!

JavaScript非同期処理とは、あるタスクを実行している間に、他のタスクが別の処理を実行できる方式です。
例えば、データベースから値を取得するなどの通信を伴う処理は、通信状況によって時間がかかる可能性があります。
その場合、非同期処理を使うと、通信が完了するまで待つのではなく、他の処理を進めることができます。
今回はJavaScript非同期処理について、簡単で分かりやすいサンプルコードを用いて解説します!

目次

非同期処理のサンプルコード

JavaScriptでは、非同期処理を実現するために、コールバック関数Promiseasync/awaitなどの機能があります。

コールバック関数とは、ある関数に引数として渡されて、その関数の中で呼び出される関数です。
Promiseとは、非同期処理の結果を表すオブジェクトで、「成功」や「失敗」などの状態や値を持ちます。
async/awaitとは、Promiseよりシンプルに書くための構文で、「async」キーワードで関数を定義し、「await」キーワードでPromiseの結果を待ちます。

管理者

シンプルなサンプルコードで解説していきます!

コールバック関数

コールバック関数とは、ある関数に引数として渡されて、その関数の処理が終わったら呼び出される関数のことです。
非同期通信に使われる場合、コールバック関数非同期処理の結果を受け取って、その後の処理を行います。

例えば、setTimeout関数は非同期処理の代表的な関数で、指定した時間が経過したらコールバック関数を実行します。

上記のコードでは、2秒後に「Hello」と表示するコールバック関数setTimeout関数に渡しています。

コールバック関数のサンプルコード

コールバック関数非同期処理の基本ですが、複雑な処理をする場合はネストが深くなったり、エラー処理が煩雑になったりする問題があります。
もっと詳しい解説はこちら。

そのため、Promiseasync/awaitといったより便利な方法も開発されています。

Promise

Promiseとは、非同期処理の結果を表すオブジェクトのことです。
Promiseオブジェクトは、pending(未決定)、fulfilled(成功)、rejected(失敗)の3つの状態を持ちます。
非同期処理が完了すると、Promiseオブジェクトはその状態に応じてthenメソッドやcatchメソッドで登録したコールバック関数を実行します。

上記のコードでは、fetch関数でHTTPリクエストを送り、その結果をPromiseオブジェクトとして受け取っています。
その後、thenメソッドでレスポンスをJSON形式に変換し、もう一度thenメソッドでデータを表示します。
もしエラーが発生したらcatchメソッドでエラーメッセージを表示します。

Promiseのサンプルコード

async/await

async/awaitとは、非同期処理をよりシンプルに書くための構文です。
async/awaitPromiseをベースにしていますが、thenメソッドやcatchメソッドを使わずに、同期処理のように記述できますが、async/awaitを使うには以下の2つのステップが必要です。

  • 非同期処理をする関数の前にasyncキーワードを付ける。
    これでその関数はPromiseオブジェクトを返すようになる。
  • Promiseオブジェクトを返す関数の前にawaitキーワードを付ける。
    これでその関数の結果が返されるまで待機するようになる。

例えば、以下のコードでは、fetch関数でHTTPリクエストを送り、その結果をJSON形式に変換し、データを表示します。
エラーが発生したらtry…catch文でエラーメッセージを表示します。

async/awaitは非同期処理の可読性や効率性が向上しますが、Promiseと同じく非同期処理の仕組みや挙動は理解しておく必要があります。

async/awaitのサンプルコード

以上がJavaScript非同期処理についての解説サンプルコードです。
ご参考になれば幸いです。

もっと詳しい解説はこちらをご参考ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次