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:

javascriptlet 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:

javascriptPromise.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:

javascriptPromise.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:

javascriptPromise.all(promises).then(function(res) {
  console.log(res);
}).catch(function(err) {
  console.log(err);
});
Задание 1

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.

Задание 2

Menggunakan tatasusunan janji dari tugas sebelumnya, buat agar hasil janji pertama yang berjaya dilaksanakan dipaparkan di konsol.

Задание 3

Menggunakan tatasusunan janji dari tugas sebelumnya, buat agar jumlah hasil semua janji dipaparkan di konsol.