【入門】JavaScriptの非同期処理を簡単に! async/awaitの使い方と基本

JavaScriptでAPIからデータを取得したり、時間がかかる処理を行ったりする際、「非同期処理」は避けて通れないテーマです。そして、その非同期処理をよりシンプルに書くための強力な構文がasync/awaitです。
今回は、JavaScriptの非同期処理の基本と、async/awaitの分かりやすい使い方を解説します。

非同期処理とは?

まず、非同期処理を理解するために、同期処理との違いを見てみましょう。

  • 同期処理:処理が完了するまで、次の処理を待機します。
  • 非同期処理:処理の完了を待たずに、次の処理を実行します。

例えば、ウェブサイトでAPIから天気情報を取得する場合を考えてみましょう。
同期処理だと、天気情報の取得が完了するまでページの他の部分(ボタンのクリックや画像の表示など)が止まってしまいます。しかし、非同期処理であれば、天気情報を待つ間にページの他の部分をスムーズに動かすことができます。

これまで、非同期処理は「コールバック関数」や「Promise」を使って実装されてきましたが、コードが複雑になりがちでした。そこで登場したのがasync/awaitです。

async/awaitの基本

async/awaitは、非同期処理を同期処理のように、上から下へ順番に読みやすい形で書くための構文です。

async関数

asyncは、非同期処理を含む関数を定義するために使用します。functionキーワードの前にasyncと付けるだけです。
async関数は、必ずPromiseを返します。

// asyncをつけた関数
async function fetchData() { 
	// ここに非同期処理を書く return "データが取得できました!";
} // async関数はPromiseを返す
fetchData().then(data => { 
	console.log(data); // "データが取得できました!"
});

await演算子

awaitは、async関数の中でしか使えません。awaitはPromiseが解決(完了)するまで処理を一時停止させ、結果を返します。これにより、コールバック地獄や.then()の連鎖から解放されます。

async function fetchData() { 
	console.log("データの取得を開始します..."); // Promiseが解決するまで待機
	const response = await fetch('https://api.example.com/data');
	const data = await response.json();
	console.log("データの取得が完了しました!");
	return data;
} fetchData();

上記のコードでは、await fetch()が完了するまで次の行のawait response.json()は実行されません。これにより、まるで同期処理のようにシンプルに記述できます。

エラーハンドリング

非同期処理では、エラーが発生する可能性があります。async/awaitでは、同期処理と同じようにtry...catchブロックを使ってエラーを捕捉できます。

async function fetchDataWithError() { 
	try { 
		const response = await fetch('https://api.example.com/non-existent-endpoint');
		if (!response.ok) { 
			throw new Error(`HTTPエラー!ステータス: ${response.status}`);
		}
		const data = await response.json();
		return data;
	} catch (error) { 
		console.error("エラーが発生しました:", error); 
	}
} fetchDataWithError();

まとめ

async/awaitは、JavaScriptの非同期処理を驚くほどシンプルで読みやすいコードに変えてくれます。

  • async:非同期処理を含む関数を定義する。
  • awaitasync関数の中でPromiseの完了を待機する。
  • try...catch:エラーを安全に処理する。

これらの構文をマスターすれば、API通信やデータベースアクセスといった非同期処理をより効率的に、そしてバグなく実装できるようになります。

CONTACTUS!

ホームページ制作のご依頼・ご相談

  • 効果測定が可能な、成果重視のホームページが欲しい
  • 問い合わせ件数を増やしたい
  • スマートフォンに対応したホームページが欲しい
  • 簡単な操作で自社管理できるホームページが欲しい
  • サポートと継続的なメンテナンスまで安心してお願いしたい
  • SEOに強い制作会社を探している

ホームページ制作のご依頼・ご相談は、Webディレクターのあがのが対応させていただきます。

新規制作 / リニューアル / 無料相談 070-9000-7474 平日 9:30〜18:00

ご対応エリア:広島県を中心に全国対応