Rumah > Artikel > hujung hadapan web > Bolehkah Janji Dibatalkan? Menyelam Dalam Mekanisme Pembatalan dalam JavaScript
ES6 berjanji sendiri tidak menyokong pembatalan. Walau bagaimanapun, terdapat kerja sedang dijalankan untuk menambah pembatalan pada janji dalam standard ECMAScript.
Cadangan pembatalan janji telah dibuat dalam spesifikasi WHATWG untuk disertakan dalam versi JavaScript ES2021 yang akan datang. Cadangan ini memperkenalkan antara muka AbortController baharu yang boleh digunakan untuk membatalkan janji.
<br>const abortController = new AbortController();<br>const promise = fetch('https://example.com', {<br> isyarat: abortController.signal<br>});</p> <p>abortController.abort();<br></ pra><br><p>Dalam JavaScript moden, anda boleh menggunakan AbortController untuk membatalkan tugas berasaskan Promise, seperti permintaan mengambil atau operasi async lain.</p></p> <p><p>Walau bagaimanapun, jika anda tidak dapat menggunakan AbortController, adalah mungkin untuk melaksanakan mekanisme pembatalan anda sendiri untuk operasi yang dimulakan oleh pengguna, seperti dalam kes penyerahan borang async atau permintaan rangkaian.</p><br><p><strong>Mencipta mekanisme pembatalan tersuai dalam JavaScript</strong>: Anda boleh melaksanakan mekanisme pembatalan mudah dengan:</p><br><ul><br><li>Mencipta Token Pembatalan yang membolehkan anda membatalkan operasi.</li><br><li>Melalukan PembatalanToken kepada tugas async yang anda mahu batalkan.</li><br><li>Membatalkan Token Pembatalan apabila pengguna memulakan pembatalan.< /li><br></ul><br><p>Token Pembatalan boleh dilaksanakan sebagai Janji dengan kaedah cancel() yang menolak Janji. Berikut ialah contoh:</p><br><pre class="lang-js prettyprint-override"><br>const cancellationToken = new Promise((resolve, reject) => {<br> return { </p> <pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
}
});
Kemudian anda boleh menghantar cancellationToken kepada tugas async yang ingin anda batalkan, seperti ini:< ;/p>
<br>const asyncTask = (cancellationToken) => {<br> // Laksanakan tugas async anda di sini<br> return fetch('https://example.com', {</p> <pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
});
}
Dan akhirnya, anda boleh membatalkan tugas async dengan memanggil kaedah cancel() pada cancellationToken, seperti ini :
<br>cancellationToken.cancel();<br>
Menggunakan pustaka pihak ketiga: Jika anda ingin menggunakan pustaka pihak ketiga untuk melaksanakan pembatalan, anda boleh menggunakan pustaka seperti bluebird atau rxjs. Berikut ialah contoh menggunakan bluebird:
<br>const Promise = require('bluebird');<br>const cancellationToken = Janji baharu .CancellationToken();</p> <p>const asyncTask = () => {<br> return fetch('https://example.com', {</p> <pre class="brush:php;toolbar:false">signal: cancellationToken.signal
});
}
cancellationToken.cancel();
< ;/pre>
Ini hanyalah beberapa cara untuk melaksanakan pembatalan dalam JavaScript. Pendekatan terbaik akan bergantung pada keperluan khusus anda.
Atas ialah kandungan terperinci Bolehkah Janji Dibatalkan? Menyelam Dalam Mekanisme Pembatalan dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!