カテゴリ: JavaScript 更新日: 2026/02/09

JavaScriptの非同期イベント処理の書き方と注意点

JavaScriptの非同期イベント処理の書き方と注意点
JavaScriptの非同期イベント処理の書き方と注意点

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでボタンをクリックしたときに少し時間がかかる処理をしたい場合、どう書けばいいですか?」

先生

「その場合は非同期処理を使います。JavaScriptではsetTimeoutPromiseasync/awaitを使って処理を遅らせたり、順番を管理できます。」

生徒

「非同期って何ですか?」

先生

「非同期とは、処理が終わるのを待たずに次の処理を進められる仕組みです。例えばボタンを押したあと、サーバーからデータを取得する間も他の操作ができるようになります。」

1. setTimeoutを使った非同期イベント処理

1. setTimeoutを使った非同期イベント処理
1. setTimeoutを使った非同期イベント処理

setTimeoutは指定した時間のあとに処理を実行する非同期関数です。ボタンをクリックして一定時間後にメッセージを表示する例を見てみましょう。


const button = document.getElementById("myButton");
button.addEventListener("click", () => {
  console.log("クリックされました。処理を待っています...");
  setTimeout(() => {
    console.log("1秒後にこのメッセージが表示されます");
  }, 1000);
});

ここでは1秒後にメッセージが表示されますが、その間に他の処理も実行可能です。

2. Promiseを使った非同期処理

2. Promiseを使った非同期処理
2. Promiseを使った非同期処理

Promiseは非同期処理の結果を表すオブジェクトです。成功時はresolve、失敗時はrejectを呼び出します。


function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const data = { name: "太郎" };
      resolve(data);
    }, 1000);
  });
}

const button = document.getElementById("fetchButton");
button.addEventListener("click", () => {
  fetchData().then((data) => {
    console.log("取得したデータ:", data);
  }).catch((error) => {
    console.error("エラー:", error);
  });
});

Promiseを使うことで、非同期処理の結果を受け取るタイミングを簡単に制御できます。

3. async/awaitを使った非同期処理

3. async/awaitを使った非同期処理
3. async/awaitを使った非同期処理

async/awaitを使うと、非同期処理を同期処理のように書けます。コードの見通しが良くなり、初心者にも理解しやすいです。


async function handleClick() {
  console.log("データ取得中...");
  try {
    const data = await fetchData();
    console.log("取得したデータ:", data);
  } catch (error) {
    console.error("エラー:", error);
  }
}

const button = document.getElementById("fetchButton");
button.addEventListener("click", handleClick);

awaitを使うとPromiseの処理が完了するまで待つことができます。

4. 非同期イベント処理の注意点

4. 非同期イベント処理の注意点
4. 非同期イベント処理の注意点
  • 非同期処理は順序が予測しにくくなることがあります。依存関係がある処理はPromiseチェーンやasync/awaitで順序を制御しましょう。
  • 複数の非同期処理を同時に実行すると、思わぬタイミングで処理が終わることがあります。Promise.allを使うと複数のPromiseの完了を待つことができます。
  • 非同期イベントで例外が発生した場合、try/catchやcatchでエラー処理を必ず行いましょう。
  • メモリリーク対策として、不要になったイベントリスナーは削除することも忘れないでください。

これらの注意点を意識することで、非同期イベント処理を安全に使うことができます。

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう
No.8
Java&Spring記事人気No8
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】