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

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

Linda Hamilton
Linda Hamiltonasal
2024-10-24 02:48:29404semak imbas

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>
<code class="javascript">// Using throw
return asyncIsPermitted()
    .then(result => {
        if (result === true) {
            return true;
        } else {
            throw new PermissionDenied();
        }
    });</code>

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>

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!

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