JavaScriptにおけるPromiseと非同期の例


  1. 単純な非同期処理の例:
function delay(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms);
  });
}
console.log("処理を開始します");
delay(2000)
  .then(() => {
    console.log("2秒後に処理が完了しました");
  })
  .catch((error) => {
    console.error("エラーが発生しました:", error);
  });

上記の例では、delay関数は指定した時間(ここでは2000ミリ秒)後に解決(resolve)されるPromiseを返します。その後、.thenブロックで非同期処理の完了後に実行するコードを指定します。エラーが発生した場合は、.catchブロックでエラーハンドリングを行います。

  1. 複数の非同期処理の連結:
function getUser(id) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const user = { id, name: "John Doe" };
      resolve(user);
    }, 1000);
  });
}
function getUserPosts(user) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const posts = ["Post 1", "Post 2", "Post 3"];
      resolve({ user, posts });
    }, 1000);
  });
}
getUser(1)
  .then((user) => getUserPosts(user))
  .then((data) => {
    console.log("ユーザー:", data.user);
    console.log("投稿一覧:", data.posts);
  })
  .catch((error) => {
    console.error("エラーが発生しました:", error);
  });

上記の例では、getUser関数とgetUserPosts関数はそれぞれ1秒後に解決されるPromiseを返します。.thenメソッドを使用して非同期処理を連結し、最終的にユーザーとユーザーの投稿一覧を取得します。

これらの例は、Promiseと非同期処理を扱う基本的な方法を示していますが、JavaScriptにはさまざまな応用的な手法やライブラリがあります。具体的な要件に合わせて適切な方法を選択してください。また、最新のJavaScriptのバージョンや関連するライブラリのドキュメントを参照することもおすすめです。