Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Melaksanakan Urutan Janji dalam Susunan dan Mengendalikan Penolakan?

Bagaimana untuk Melaksanakan Urutan Janji dalam Susunan dan Mengendalikan Penolakan?

Susan Sarandon
Susan Sarandonasal
2024-11-24 13:18:11950semak imbas

How to Execute a Sequence of Promises in Order and Handle Rejections?

Cara Menyegerakkan Urutan Janji

Dalam senario ini, anda perlu memastikan bahawa:

  • Janji diselesaikan dalam keadaan yang sama tertib mereka disenaraikan dalam tatasusunan.
  • Jika mana-mana elemen ditolak, keseluruhan jujukan harus ditolak.

Walaupun tiada penyelesaian terbina dalam langsung untuk ini, berikut ialah cara untuk mencapai tingkah laku ini:

Lelaran Manual Menggunakan Rekursi:

function sequence(arr) {
  const index = 0;

  function next() {
    if (index < arr.length) {
      arr[index]().then(next).catch(reject);
      index++;
    }
  }
  next();
}

Menggunakan Kurangkan:

function sequence(arr) {
  return arr.reduce((p, item) => {
    return p.then(() => item()); // Assuming each element is a promise-returning function
  }, Promise.resolve());
}

Menggunakan Promise.mapSeries:

Jika anda menggunakan perpustakaan Bluebird Promise, anda boleh menggunakan kaedah Promise.mapSeries:

function sequence(arr) {
  return Promise.mapSeries(arr, item => item());
}

Menggunakan ES7 Async/Await:

Jika disokong, anda boleh menggunakan async/wait untuk mencapai ini:

async function sequence(arr) {
  const results = [];
  for (let item of arr) {
    results.push(await item());
  }
  return results;
}

Menggunakan Spex Library:

Pustaka spex menyediakan kaedah jujukan yang membolehkan anda mengulangi jujukan dinamik janji:

import { sequence } from 'spex';

function sequence(nextPromise) {
  // while nextPromise() creates and returns another promise, continue resolving it;
}

Ingat, jika mana-mana elemen dalam tatasusunan ditolak, jujukan akan menolak sebaik sahaja penolakan itu ditemui. Tingkah laku ini memastikan elemen selanjutnya tidak diproses.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Urutan Janji dalam Susunan dan Mengendalikan Penolakan?. 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