Bila hendak menggunakan Promise.reject vs. Melempar Ralat dalam Janji JavaScript?

DDD
Lepaskan: 2024-10-23 22:28:30
asal
238 orang telah melayarinya

When to Use Promise.reject vs. Throwing an Error in JavaScript Promises?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!