Bekerja dengan Array Promise di JavaScript
Sekarang kita akan membahas dua metode yang berguna,
yang memungkinkan kita bekerja dengan array promise.
Metode Promise.all memungkinkan mengeksekusi
kode setelah semua promise yang diberikan
kepadanya dalam bentuk array selesai,
sedangkan metode Promise.race
menunggu promise pertama dalam array selesai,
dan mengabaikan yang lainnya.
Kedua metode mengembalikan promise baru sebagai hasilnya.
Untuk metode Promise.all, hasil dari
promise ini akan berupa array yang berisi hasil dari semua
promise yang diberikan (urutan hasilnya
sesuai dengan urutan promise dalam array),
sedangkan untuk Promise.race - hasil dari promise
pertama yang selesai.
Mari kita lihat dalam praktik. Misalkan kita memiliki array promise:
let promises = [
new Promise(resolve => setTimeout(() => resolve(1), 1000)),
new Promise(resolve => setTimeout(() => resolve(2), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 3000)),
];
Mari gunakan Promise.all untuk menunggu
semua promise dalam array kita selesai:
Promise.all(promises).then(function(res) {
console.log(res); // akan menampilkan [1, 2, 3] - hasil semua promise
});
Sekarang mari gunakan Promise.race untuk menunggu
promise pertama yang selesai:
Promise.race(promises).then(function(res) {
console.log(res); // akan menampilkan 1 - hasil promise pertama yang selesai
});
Jika salah satu promise dalam array
ditolak (rejected), maka promise dengan hasil tersebut akan segera
beralih ke status rejected. Oleh karena itu,
pengecualian yang terjadi dapat ditangkap dengan cara biasa,
yang telah Anda pelajari, misalnya, melalui
catch:
Promise.all(promises).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
Buatlah fungsi yang mengembalikan promise, di dalamnya
terdapat penundaan acak dari
1 hingga 10 detik. Biarkan
hasil promise mengembalikan penundaan ini.
Dengan menggunakan perulangan dan fungsi Anda, isi
array dengan 10 promise.
Menggunakan array promise dari tugas sebelumnya, buatlah agar hasil promise pertama yang selesai ditampilkan di konsol.
Menggunakan array promise dari tugas sebelumnya, buatlah agar jumlah (sum) hasil semua promise ditampilkan di konsol.