JavaScriptで同時に2つの関数を実行する方法


  1. Promiseを使用する方法:

    function asyncFunction1() {
    return new Promise((resolve, reject) => {
    // 非同期の処理
    setTimeout(() => {
      console.log("関数1の処理");
      resolve();
    }, 1000);
    });
    }
    function asyncFunction2() {
    return new Promise((resolve, reject) => {
    // 非同期の処理
    setTimeout(() => {
      console.log("関数2の処理");
      resolve();
    }, 2000);
    });
    }
    Promise.all([asyncFunction1(), asyncFunction2()])
    .then(() => {
    console.log("両方の関数が完了しました");
    })
    .catch((error) => {
    console.error("エラーが発生しました", error);
    });
  2. async/awaitを使用する方法:

    async function asyncFunction1() {
    return new Promise((resolve, reject) => {
    // 非同期の処理
    setTimeout(() => {
      console.log("関数1の処理");
      resolve();
    }, 1000);
    });
    }
    async function asyncFunction2() {
    return new Promise((resolve, reject) => {
    // 非同期の処理
    setTimeout(() => {
      console.log("関数2の処理");
      resolve();
    }, 2000);
    });
    }
    async function executeFunctions() {
    try {
    await Promise.all([asyncFunction1(), asyncFunction2()]);
    console.log("両方の関数が完了しました");
    } catch (error) {
    console.error("エラーが発生しました", error);
    }
    }
    executeFunctions();
  3. Web Workersを使用する方法:

    // worker.jsファイルに下記のコードを保存します
    self.onmessage = function () {
    // 非同期の処理
    setTimeout(() => {
    console.log("関数1の処理");
    self.postMessage("関数1の処理完了");
    }, 1000);
    // 非同期の処理
    setTimeout(() => {
    console.log("関数2の処理");
    self.postMessage("関数2の処理完了");
    }, 2000);
    };
    // メインスクリプト内での使用例
    var worker = new Worker("worker.js");
    worker.onmessage = function (event) {
    console.log(event.data);
    // 必要な処理を実行
    };
    worker.postMessage();

これらの方法を使用すると、JavaScriptで2つの関数を同時に実行することができます。それぞれの方法には異なる利点と制約がありますので、使用する環境やニーズに合わせて適切な方法を選択してください。