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

Bagaimana Menjujukan Perlaksanaan Janji dengan Hantaran Parameter daripada Tatasusunan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-20 14:57:02373semak imbas

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()
)

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)

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
}

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!

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