Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengendalikan Pengecualian Tak Segerak dengan Janji Bluebird?

Bagaimanakah Saya Boleh Mengendalikan Pengecualian Tak Segerak dengan Janji Bluebird?

DDD
DDDasal
2024-10-26 04:36:02803semak imbas

How Can I Handle Asynchronous Exceptions with Bluebird Promises?

Mengendalikan Pengecualian Asynchronous dengan Bluebird Promises

Apabila bekerja dengan rutin tak segerak, pengendalian pengecualian boleh menjadi sukar untuk diuruskan. Promises, ciri utama Bluebird.js, menyediakan cara berstruktur untuk mengendalikan pengecualian tak segerak.

Cabaran

Dalam contoh kod anda, setTimeout digunakan dalam panggilan balik bukan janji. Apabila ralat dilemparkan dalam panggilan balik ini, tangkapan Bluebird tidak akan dicetuskan, menyebabkan program ranap.

Struktur Janji Bluebird

Janji memintas pengecualian yang dilemparkan dalam panggilan balik mereka fungsi (kemudian/tangkap/pembina Janji). Untuk mengendalikan pengecualian daripada panggilan balik tak segerak, adalah penting untuk membungkusnya dengan janji.

Pengendalian Pengecualian Elegan

Dalam senario anda, anda boleh menyertakan panggilan balik setTimeout dalam janji . Blok tangkapan kemudiannya akan menangkap ralat:

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    setTimeout(resolve, 500);
  }).then(function() {
    console.log("hihihihi");
    throw new Error("Oh no!");
  });
}</code>

Penolakan Adalah Kunci

Jangan sekali-kali membuang ralat secara langsung dalam panggilan balik bukan janji. Sebaliknya, tolak janji sekeliling. Jika perlu, gunakan try-catch untuk memastikan pengendalian yang betul.

<code class="javascript">function getPromise() {
  return new Promise(function(resolve, reject) {
    try {
      setTimeout(resolve, 500);
    } catch (err) {
      reject(err);
    }
  });
}</code>

Dengan mematuhi prinsip ini, anda boleh memastikan pengendalian pengecualian yang anggun dalam kedua-dua Node.js dan penyemak imbas, walaupun untuk panggilan balik tak segerak yang jahat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pengecualian Tak Segerak dengan Janji Bluebird?. 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