JavaScriptのプロミスとコールバックの違いと使い方について解説します


コールバックは、非同期処理が完了した後に呼び出される関数です。例えば、setTimeout関数を使用して非同期的に処理を遅延させる場合、コールバック関数を指定して処理が完了した後に呼び出されるコードを定義します。

一方、プロミスはES6から導入された新しい機能で、非同期処理をより直感的に扱うための手法です。プロミスは非同期処理の結果を表すオブジェクトであり、成功時と失敗時の2つの状態を持ちます。非同期処理が完了すると、成功時はresolve関数が呼び出され、失敗時はreject関数が呼び出されます。

プロミスを使用すると、コールバック地獄(callback hell)と呼ばれるコードのネストを避けることができます。また、プロミスはチェーン可能であり、複数の非同期処理を順番に実行することができます。これにより、コードの可読性や保守性が向上します。

以下に、コールバックとプロミスの使い方の例を示します。

コールバックの例:

function fetchData(callback) {
  setTimeout(function() {
    const data = '取得したデータ';
    callback(data);
  }, 1000);
}
fetchData(function(data) {
  console.log(data);
});

プロミスの例:

function fetchData() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      const data = '取得したデータ';
      resolve(data);
    }, 1000);
  });
}
fetchData()
  .then(function(data) {
    console.log(data);
  })
  .catch(function(error) {
    console.error(error);
  });

プロミスを使用すると、.thenメソッドを使用して成功時の処理を、.catchメソッドを使用して失敗時の処理を定義することができます。

以上が、JavaScriptのプロミスとコールバックの違いと使い方についての解説です。プロミスを使うことで、より効果的かつ読みやすい非同期処理を実装することができます。