Rumah > hujung hadapan web > tutorial js > Bagaimana Menjujukan Perlaksanaan Janji dengan Hantaran Parameter daripada Tatasusunan?

Bagaimana Menjujukan Perlaksanaan Janji dengan Hantaran Parameter daripada Tatasusunan?

Mary-Kate Olsen
Lepaskan: 2024-10-20 14:57:02
asal
447 orang telah melayarinya

How to Sequence Promise Execution with Parameter Passing from an Array?

Pelaksanaan Janji Berurutan dengan Melepasi Parameter daripada Tatasusunan

Pertimbangkan senario di mana anda mempunyai tatasusunan nilai (cth., myArray) dan perlu melaksanakan janji- fungsi berasaskan (cth., myPromise) secara berurutan, menghantar setiap elemen tatasusunan sebagai parameter. Bagaimanakah anda boleh melaksanakan "gelung boleh jeda" yang memastikan janji diselesaikan dalam susunan yang betul?

Penyelesaian: Pelaksanaan Janji Berulang

Untuk mencapai pelaksanaan berurutan, anda boleh menggunakan gabungan rantaian janji dan pemprosesan berulang. Berikut ialah coretan kod yang menunjukkan cara ini boleh dilakukan:

myArray.reduce(
  (p, x) =>
    p.then(() => myPromise(x)),
  Promise.resolve()
)
Salin selepas log masuk

Pendekatan ini memanfaatkan kaedah pengurangan untuk mengulangi tatasusunan dan mencipta satu siri janji berantai. Setiap janji diselesaikan selepas janji sebelumnya diselesaikan, dengan berkesan menguatkuasakan urutan pelaksanaan yang diingini.

Alternatif Fungsi Async

Jika anda mempunyai sokongan untuk fungsi tak segerak, penyelesaian yang lebih bersih tersedia menggunakan forEachSeries fungsi:

const forEachSeries = async (iterable, action) => {
  for (const x of iterable) {
    await action(x)
  }
}

forEachSeries(myArray, myPromise)
Salin selepas log masuk

Fungsi ini berulang pada tatasusunan dan berhenti seketika pada setiap elemen, menunggu janji diselesaikan sebelum meneruskan ke lelaran seterusnya.

Mengumpul Hasil

Jika anda perlu mengumpul nilai pulangan janji ke dalam tatasusunan, anda boleh mengubah suai fungsi forEachSeries seperti berikut:

const mapSeries = async (iterable, fn) => {
  const results = []

  for (const x of iterable) {
    results.push(await fn(x))
  }

  return results
}
Salin selepas log masuk

Fungsi ini berulang ke atas tatasusunan, mengumpul hasil janji dalam keputusan tatasusunan, dan akhirnya mengembalikan hasil yang dikumpul.

Atas ialah kandungan terperinci Bagaimana Menjujukan Perlaksanaan Janji dengan Hantaran Parameter daripada Tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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