Rumah > hujung hadapan web > tutorial js > Apakah Perbezaan Antara Promise.reject() dan Melempar Ralat dalam Janji JavaScript?

Apakah Perbezaan Antara Promise.reject() dan Melempar Ralat dalam Janji JavaScript?

Linda Hamilton
Lepaskan: 2024-10-24 02:48:29
asal
488 orang telah melayarinya

What's the Difference Between Promise.reject() and Throwing Errors in JavaScript Promises?

JavaScript Janji: Meneroka Perbezaan Antara reject() dan throw()

Janji dalam JavaScript menyediakan mekanisme yang berkuasa untuk mengendalikan operasi tak segerak. Rawatan ralat dan penolakan dalam Promises telah menimbulkan persoalan mengenai perbezaan antara menggunakan Promise.reject() dan hanya membuang ralat.

Perbandingan Penggunaan

Kod berikut coretan menunjukkan penggunaan kedua-dua kaedah:

<code class="javascript">// Using Promise.reject()
return asyncIsPermitted()
    .then(result => {
        if (result === true) {
            return true;
        } else {
            return Promise.reject(new PermissionDenied());
        }
    });</code>
Salin selepas log masuk
<code class="javascript">// Using throw
return asyncIsPermitted()
    .then(result => {
        if (result === true) {
            return true;
        } else {
            throw new PermissionDenied();
        }
    });</code>
Salin selepas log masuk

Perbezaan dalam Tingkah Laku

Secara amnya, tiada perbezaan fungsi antara menggunakan Promise.reject() dan membuang ralat dalam panggilan balik Promise. Kedua-duanya akan mengakibatkan Janji ditolak dan pengendali penolakan dipanggil.

Pengecualian kepada Peraturan

Walau bagaimanapun, pengecualian timbul apabila ralat dilemparkan ke luar Janji panggil balik. Dalam kes ini, Promise.reject() mesti digunakan untuk menyebarkan ralat ke dalam rantai Promise. Sebagai contoh, kod berikut tidak akan mencetuskan blok tangkapan:

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

Untuk mengendalikan ralat yang dilemparkan di luar panggilan balik Promise, gunakan Promise.reject() untuk menukarnya menjadi penolakan Promise.

Kesimpulan

Walaupun tiada kelebihan yang wujud untuk menggunakan satu kaedah berbanding yang lain dalam panggilan balik Promise, Promise.reject() adalah penting apabila mengendalikan ralat di luar panggilan balik Promise. Memahami perbezaan ini memastikan pengendalian ralat yang betul dan pengaturcaraan tak segerak yang cekap.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Promise.reject() dan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan