Pengendalian Tatasusunan Janji dalam JavaScript
Sekarang kita akan membincangkan dua kaedah berguna,
yang membolehkan bekerja dengan tatasusunan janji.
Kaedah Promise.all membolehkan melaksanakan
kod setelah semua janji yang disampaikan
kepadanya dalam bentuk tatasusunan selesai,
manakala kaedah Promise.race
menunggu pemuatan janji pertama dari tatasusunan,
membuang yang lain.
Kedua-dua kaedah mengembalikan janji baharu
sebagai hasilnya. Bagi kaedah Promise.all, hasil
janji ini akan menjadi tatasusunan hasil semua
janji yang disampaikan (susunan hasil
sepadan dengan susunan janji dalam tatasusunan),
manakala bagi Promise.race - hasil janji pertama
yang berjaya dilaksanakan.
Mari kita lihat dalam praktik. Katakan kita mempunyai tatasusunan janji:
let promises = [
new Promise(resolve => setTimeout(() => resolve(1), 1000)),
new Promise(resolve => setTimeout(() => resolve(2), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 3000)),
];
Mari menggunakan Promise.all untuk menunggu
sehingga semua janji dari tatasusunan kita
siap dimuat:
Promise.all(promises).then(function(res) {
console.log(res); // akan memaparkan [1, 2, 3] - hasil semua janji
});
Sekarang mari menggunakan Promise.race untuk menunggu
sehingga janji pertama siap dimuat:
Promise.race(promises).then(function(res) {
console.log(res); // akan memaparkan 1 - hasil janji pertama yang dilaksanakan
});
Jika sekurang-kurangnya satu janji dalam tatasusunan
ditolak, maka janji dengan hasil akan segera
bertukar kepada keadaan rejected. Oleh itu,
pengecualian yang timbul boleh ditangkap dengan cara biasa,
yang telah anda pelajari, contohnya, melalui
catch:
Promise.all(promises).then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
Buat fungsi yang mengembalikan janji, di dalamnya
ditentukan kelewatan rawak dari
1 hingga 10 saat. Biarkan
hasil janji mengembalikan kelewatan ini.
Menggunakan gelung dan fungsi anda, isikan
tatasusunan dengan 10 janji.
Menggunakan tatasusunan janji dari tugas sebelumnya, buat agar hasil janji pertama yang berjaya dilaksanakan dipaparkan di konsol.
Menggunakan tatasusunan janji dari tugas sebelumnya, buat agar jumlah hasil semua janji dipaparkan di konsol.