Bagaimanakah Saya Boleh Membatalkan Janji dalam JavaScript untuk Carian Ke Hadapan?

Patricia Arquette
Lepaskan: 2024-10-29 18:58:02
asal
833 orang telah melayarinya

 How Can I Cancel Promises in JavaScript for Type-Ahead Search?

Janji - adakah mungkin untuk membatalkan janji secara paksa

Dalam senario ini, pengguna sedang melakukan carian jenis hadapan, dan setiap ketukan kekunci mencetuskan panggilan belakang baharu. Apabila pengguna menaip lebih pantas, permintaan lama menjadi tidak relevan dan perlu dibatalkan.

Janji dalam ES6, seperti yang sedia ada pada masa ini, tidak menyokong pembatalan di luar kotak. Walau bagaimanapun, terdapat kerja berterusan untuk memperkenalkan keupayaan pembatalan melalui AbortController, primitif merentas platform yang boleh membatalkan operasi tak segerak seperti permintaan rangkaian.

Menggunakan AbortController

Sebagai pendekatan moden, AbortController menyediakan isyarat objek yang boleh digunakan untuk membatalkan fungsi yang mengembalikan janji. Sintaksnya kelihatan seperti ini:

<code class="javascript">async function somethingIWantToCancel({ signal } = {}) {
  // Use the signal object to manually adapt code for cancellation support
  const onAbort = (e) => {
    // Handle cancellation logic here
  };
  signal.addEventListener('abort', onAbort, { once: true });
  try {
    const response = await fetch('...', { signal });
  } catch (e) {
    if (e.name === 'AbortError') {
      // Deal with cancellation in caller
    } else {
      throw e;
    }
  } finally {
    signal.removeEventListener('abort', onAbort);
  }
}</code>
Salin selepas log masuk

Dalam contoh ini, fungsi somethingIWantToCancel mengambil parameter isyarat, yang merupakan contoh AbortController. Pendengar signal.addEventListener mendaftarkan pengendali acara untuk acara batalkan, yang dicetuskan apabila operasi dibatalkan. Blok akhirnya memastikan pendengar acara dialih keluar apabila operasi selesai.

Alternatif

Jika AbortController bukan pilihan, pendekatan lain ialah menggunakan perpustakaan pihak ketiga seperti Bluebird, yang menyediakan keupayaan pembatalan.

Alternatif lain ialah menggunakan token pembatalan. Ini melibatkan penghantaran fungsi kepada kaedah yang boleh dipanggil untuk membatalkan permintaan.

Kesimpulan

Walaupun janji ES6 tidak mempunyai sokongan pembatalan asli, AbortController dan alternatif lain menyediakan cara untuk membatalkan operasi tak segerak dalam JavaScript moden. Untuk senario lama, menggunakan token pembatalan atau pustaka pihak ketiga masih boleh memberikan penyelesaian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membatalkan Janji dalam JavaScript untuk Carian Ke Hadapan?. 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