Rumah  >  Artikel  >  hujung hadapan web  >  Bila hendak menggunakan Promise.reject vs. Throw in JavaScript Promises?

Bila hendak menggunakan Promise.reject vs. Throw in JavaScript Promises?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-23 22:34:30357semak imbas

When to Use Promise.reject vs. Throw in JavaScript Promises?

Janji JavaScript: Enigma Tolak vs. Lempar

Apabila bekerja dengan janji JavaScript, pembangun sering menghadapi dilema: patutkah mereka menggunakan Promise .menolak atau hanya membuang ralat? Walaupun kedua-dua kaedah mempunyai tujuan yang sama, kekeliruan masih wujud mengenai perbezaan dan potensi kelebihannya.

Meneroka Persamaan

Akhirnya, tiada kelebihan yang wujud dalam menggunakan Promise.reject terlebih membuang kesilapan atau sebaliknya. Kedua-dua mekanisme menetapkan janji kepada keadaan ditolak dan mencetuskan pelaksanaan pengendali .catch or catch().

Menyingkap Perbezaan Halus

Walau bagaimanapun, kes tertentu wujud apabila membuang ralat tidak mencukupi: panggilan balik tak segerak di luar panggilan balik janji. Dalam situasi ini, Promise.reject ialah satu-satunya pilihan untuk membuat keadaan ditolak diketahui kepada rantai janji.

Pertimbangkan contoh berikut:

<code class="javascript">new Promise(function() {
  setTimeout(function() {
    throw 'or nah';
    // Using Promise.reject('or nah') also won't work in this case
  }, 1000);
}).catch(function(e) {
  console.log(e); // doesn't happen
});</code>

Dalam senario ini, ralat yang dilemparkan ke dalam panggilan balik setTimeout tidak akan ditangkap oleh pengendali .catch kerana ia tidak dilaksanakan dalam panggilan balik janji. Untuk mengendalikan situasi jenis ini dengan berkesan, Promise.reject mesti digunakan dalam panggilan balik tak segerak.

Memilih Amalan Terbaik

Secara amnya, sama ada Promise.reject atau throwing ralat boleh digunakan untuk menetapkan janji kepada keadaan yang ditolak. Walau bagaimanapun, apabila bekerja dengan panggilan balik tak segerak di luar panggilan balik janji, Promise.reject menjadi satu-satunya pilihan yang berdaya maju.

Atas ialah kandungan terperinci Bila hendak menggunakan Promise.reject vs. Throw in JavaScript Promises?. 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