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:

  1. Pending: Status awal, belum selesai atau gagal.

  2. Fulfilled: Operasi selesai dengan sukses.

  3. 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 menggunakan setTimeout 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