Memahami Perbezaan Antara Promise.reject vs. Throwing Ralat dalam JavaScript
Promise.reject dan throwing ralat dalam JavaScript promises melayani tujuan untuk menamatkan pelaksanaan janji dan menandakan kegagalan. Walaupun kedua-dua kaedah pada asasnya mencapai hasil yang sama, terdapat senario tertentu di mana satu pendekatan terbukti lebih sesuai.
Promise.reject
Kaedah Promise.reject() secara jelas menolak janji, menyebabkan pengendali .catch() atau .then(null, rejectHandler)nya dilaksanakan. Ia menerima parameter yang biasanya mewakili ralat atau sebab penolakan. Berikut ialah contoh:
<code class="javascript">return asyncIsPermitted() .then(function(result) { if (result === true) { return true; } else { return Promise.reject(new PermissionDenied()); } });</code>
Menggunakan Promise.reject membolehkan kawalan yang lebih besar ke atas pengendalian ralat, kerana nilai yang ditolak boleh disesuaikan untuk menyediakan konteks tambahan atau membawa maklumat khusus tentang kegagalan.
Melempar Ralat
Melempar ralat dalam panggilan balik janji mencetuskan pengendali .catch() seterusnya. Objek ralat yang dilemparkan menjadi nilai janji yang ditolak. Ia adalah sintaks yang lebih ringkas berbanding dengan Promise.reject(). Pertimbangkan contoh berikut:
<code class="javascript">return asyncIsPermitted() .then(function(result) { if (result === true) { return true; } else { throw new PermissionDenied(); } });</code>
Bila Menggunakan Setiap Pendekatan
Sementara kedua-dua Promise.reject dan throwing ralat mencapai hasil yang sama, terdapat kes khusus di mana membuang ralat tidak akan mencetuskan pengendali .catch(). Jika ralat dilemparkan di luar panggilan balik janji, di dalam panggilan balik tak segerak (cth., setTimeout() atau panggil balik fungsi tak segerak), maka ia tidak akan ditangkap oleh .catch(). Dalam kes sedemikian, Promise.reject() harus digunakan.
Kesimpulan
Secara amnya, kedua-dua Promise.reject dan membuang ralat dalam promise boleh digunakan secara bergantian untuk menolak janji dan kegagalan isyarat. Promise.reject memberikan lebih fleksibiliti untuk menyesuaikan nilai yang ditolak, manakala melontar ralat adalah lebih ringkas. Adalah penting untuk mengambil perhatian pengecualian yang dinyatakan di atas untuk memastikan pengendalian ralat yang betul dalam semua senario.
Atas ialah kandungan terperinci Bila hendak menggunakan Promise.reject vs. Melempar Ralat dalam Janji JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!