コールバックは、非同期処理が完了した後に呼び出される関数です。例えば、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のプロミスとコールバックの違いと使い方についての解説です。プロミスを使うことで、より効果的かつ読みやすい非同期処理を実装することができます。