非同期/待機に関する理解

async/await(アシンク/アウェイト)とは、非同期処理を扱うためのJavaScriptの構文糖で、Promiseオブジェクトのチェインをベースにして非同期コードをより簡潔で読みやすく、保守しやすいものにします。

原理は以下のとおりです。

  1. async キーワード: 通常の関数を非同期関数としてマークします。非同期関数は自動的に Promise オブジェクトを返します。
  2. awaitキーワード:非同期関数で、awaitキーワードはPromiseオブジェクトの状態がresolved(解決済み)になるのを待ってから続くコードを実行します。awaitキーワードの後はPromiseオブジェクトでも、thenメソッドを持つ任意のオブジェクトでもかまいません。
  3. Promiseオブジェクト: PromiseはJavaScriptで非同期処理を行う仕組みの一つです。非同期処理の最終的な結果を表し、thenメソッドでコールバック関数を追加して、非同期処理の成功・失敗時の処理を行うことができます。
  4. 非同期関数は、呼び出し時すぐに実行され、Promiseオブジェクトを返します。Promiseオブジェクト内のawaitキーワードを使って、解決状態を待ってから以降のコードを実行しますが、他のコードの実行をブロックしません。
  5. 「await」式の挙動:await 式を与えると、現在の関数の処理は停止し、Promise オブジェクトの状態が resolved になるまで待ちます。Promise オブジェクトの状態が rejected(拒否済み)になると、エラーが発生します。Promise オブジェクトの状態が resolved になったら、「await」式は Promise オブジェクトの resolved 値を返し、続くコードの実行が再開します。
  6. エラー処理:非同期関数では、await式でスローされるエラーをtry-catch文で補足できる。同期コードの例外処理と同様だ。

async/awaitは、Promiseオブジェクトを使用した非同期処理におけるシンタックスシュガーであり、非同期コードの記述を簡素化し、可読性と保守性を向上させます。

bannerAds