JavaScript | 非同期処理をブレークポイントで止める

JavaScript
スポンサーリンク

では、ブラウザ上で非同期処理のブレークポイントとウォッチを練習できるサンプルを作ります。

下記のHTMLファイルを作り、ブラウザで開くとすぐ練習できます。


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>非同期デバッグ練習</title>
</head>
<body>
<h1>非同期デバッグ練習用サンプル</h1>
<button id="timeoutBtn">setTimeout デバッグ</button>
<button id="fetchBtn">fetch デバッグ</button>

<script>
// ---------------------------
// 1. setTimeout 練習
// ---------------------------
function timeoutTask() {
  console.log("timeoutTask: start");
  let count = 0;

  const timer = setTimeout(() => {
    count += 1;
    console.log("timeoutTask inside setTimeout, count =", count);
    let message = "タイマー完了!";
    console.log("message:", message); // ← ここにブレークポイント
  }, 2000);

  console.log("timeoutTask: end");
}

// ---------------------------
// 2. fetch 練習
// ---------------------------
async function fetchTask() {
  console.log("fetchTask: start");
  try {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
    const data = await response.json();
    console.log("Fetched title:", data.title); // ← ここにブレークポイント
  } catch (err) {
    console.error("fetchTask error:", err);
  }
  console.log("fetchTask: end");
}

// ---------------------------
// ボタンにイベント設定
// ---------------------------
document.getElementById("timeoutBtn").addEventListener("click", timeoutTask);
document.getElementById("fetchBtn").addEventListener("click", fetchTask);

</script>
</body>
</html>
HTML

練習手順

  1. このコードを async_debug.html などの名前で保存
  2. ブラウザで開く → F12 → Sources タブを開く
  3. 下記の行にブレークポイントを置く
    • console.log("message:", message);(setTimeout 内)
    • console.log("Fetched title:", data.title);(fetch 内)
  4. ページ上のボタンをクリック
  5. ブレークポイントで停止 → Scope / Watch / Call Stack で値を確認
  6. ステップ実行(Step over / Step into)を使って処理の流れを追う

追加の練習ポイント

  • Watch に countmessage / data.title を追加して、値の変化を確認
  • Step into で fetch の .then() や Promise の流れを追う
  • setTimeout のタイマーを複数作って、非同期処理の順番を確認

💡 このサンプルは 非同期処理+ブレークポイント+ウォッチ の基礎練習用です。
ブラウザ開発ツールに慣れるまで何度も試すと、非同期の挙動が自然に理解できるようになります。

タイトルとURLをコピーしました