Bagaimanakah Saya Boleh Mengendalikan Pengecualian Tak Segerak dengan Janji Bluebird?

DDD
Lepaskan: 2024-10-26 04:36:02
asal
719 orang telah melayarinya

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

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

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!

sumber:php.cn
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!