Rumah > hujung hadapan web > tutorial js > Bagaimanakah Promise.all() Boleh Mengendalikan Berbilang Operasi Asynchronous Serentak?

Bagaimanakah Promise.all() Boleh Mengendalikan Berbilang Operasi Asynchronous Serentak?

Susan Sarandon
Lepaskan: 2024-12-30 05:45:15
asal
647 orang telah melayarinya

How Can Promise.all() Handle Multiple Concurrent Asynchronous Operations?

Mengendalikan Berbilang Operasi Asynchronous Secara serentak

Dalam senario di mana urutan operasi tak segerak (diwakili sebagai Janji) dilaksanakan, ia menjadi perlu untuk menentukan apabila semua operasi ini telah selesai sebelum meneruskan dengan tugasan seterusnya. Artikel ini menyediakan penyelesaian kepada cabaran ini dengan memanfaatkan kaedah Promise.all().

Seperti yang anda nyatakan, fungsi doSomeAsyncStuff() melaksanakan tugas tak segerak. Dengan mengubah suainya untuk mengembalikan Janji, kami boleh menangkap status penyiapan setiap operasi tak segerak. Ini membolehkan kami mengumpul semua Janji ini ke dalam tatasusunan, yang kemudiannya diserahkan kepada Promise.all().

Kaedah Promise.all() menerima tatasusunan Janji sebagai parameternya. Setelah semua Janji dalam tatasusunan sama ada diselesaikan atau ditolak, Promise.all() mengembalikan satu Janji. Janji tunggal ini menyelesaikan kepada tatasusunan keputusan (atau sebab penolakan) daripada Janji individu.

Dalam kod anda, anda boleh melaksanakan ini dengan memasukkan langkah berikut:

const promises = [];

// Create a Promise for each asynchronous operation
for (let i = 0; i < 5; i++) {
  promises.push(doSomeAsyncStuff());
}

// Use Promise.all to wait for all the Promises to resolve
Promise.all(promises)
  .then(() => {
    // All asynchronous operations have completed. Execute subsequent tasks here.
    for (let i = 0; i < 5; i++) {
      doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
    }
  })
  .catch((e) => {
    // Handle any errors that occurred during the asynchronous operations.
  });
Salin selepas log masuk

Oleh menggunakan Promise.all(), anda boleh memastikan bahawa semua operasi tak segerak telah berjaya diselesaikan sebelum melaksanakan tugas yang bergantung pada mereka. keputusan.

Untuk penjelasan lanjut, rujuk contoh yang disediakan:

function doSomethingAsync(value) {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log("Resolving " + value);
      resolve(value);
    }, Math.floor(Math.random() * 1000));
  });
}

function test() {
  const promises = [];

  for (let i = 0; i < 5; ++i) {
    promises.push(doSomethingAsync(i));
  }

  Promise.all(promises)
    .then((results) => {
      console.log("All done", results);
    })
    .catch((e) => {
      // Handle errors here
    });
}

test();
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan fungsi tak segerak doSomethingAsync() yang diselesaikan dengan kelewatan rawak. Kami mencipta pelbagai Janji dan menggunakan Promise.all() untuk menunggu kesemuanya diselesaikan. Setelah semuanya berjaya diselesaikan, kami boleh meneruskan tugasan kami yang seterusnya.

Atas ialah kandungan terperinci Bagaimanakah Promise.all() Boleh Mengendalikan Berbilang Operasi Asynchronous Serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan