Promise dalam JavaScript

Apa itu Promise?
Promise adalah objek yang digunakan untuk menangani operasi asinkron dalam JavaScript. Promise mewakili nilai yang mungkin tersedia sekarang, di masa mendatang, atau tidak sama sekali. Promise membantu menangani kode asinkron dengan cara yang lebih mudah dibaca dan ditulis daripada callback.
Status Promise
Promise memiliki tiga status:
Pending: Status awal, belum selesai atau gagal.
Fulfilled: Operasi selesai dengan sukses.
Rejected: Operasi gagal.
Sintaks Promise
let promise = new Promise((resolve, reject) => {
// Operasi asinkron
if (/* operasi sukses */) {
resolve(value); // Selesaikan promise
} else {
reject(error); // Gagalkan promise
}
});
Menggunakan Promise
Promise memiliki metode .then()
untuk menangani nilai sukses (fulfilled) dan .catch()
untuk menangani kesalahan (rejected).
Contoh Promise
Membuat dan Menggunakan Promise
let myPromise = new Promise((resolve, reject) => {
let success = true;
if (success) {
resolve('Operation was successful');
} else {
reject('Operation failed');
}
});
myPromise
.then((message) => {
console.log(message); // Output: Operation was successful
})
.catch((error) => {
console.error(error);
});
Penjelasan:
myPromise
adalah Promise yang mensimulasikan operasi yang bisa berhasil atau gagal. Jika operasi berhasil,resolve
dipanggil, dan jika gagal,reject
dipanggil..then()
menangani kasus sukses, sedangkan.catch()
menangani kasus gagal.
Promise Asinkron (Misalnya, Menggunakan setTimeout
)
let asyncPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Async operation completed');
}, 2000);
});
asyncPromise
.then((message) => {
console.log(message); // Output: Async operation completed (setelah 2 detik)
})
.catch((error) => {
console.error(error);
});
Penjelasan:
asyncPromise
menggunakansetTimeout
untuk mensimulasikan operasi asinkron. Setelah 2 detik,resolve
dipanggil, dan pesan sukses ditampilkan melalui.then()
.
Chaining Promises
Promise bisa dirantai (chained) untuk menjalankan beberapa operasi asinkron secara berurutan.
let firstPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('First operation completed');
}, 1000);
});
firstPromise
.then((message) => {
console.log(message); // Output: First operation completed
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Second operation completed');
}, 1000);
});
})
.then((message) => {
console.log(message); // Output: Second operation completed
})
.catch((error) => {
console.error(error);
});
Penjelasan: Promise pertama menyelesaikan operasinya dalam 1 detik dan mengembalikan Promise kedua, yang juga menyelesaikan operasinya dalam 1 detik. Pesan dari kedua Promise ditampilkan secara berurutan.
Sumber
Promise adalah alat yang sangat berguna untuk menangani operasi asinkron dalam JavaScript, membuat kode lebih bersih dan lebih mudah dipahami dibandingkan dengan callback tradisional.
Last updated