Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengendalikan Pengecualian Tak Segerak dengan Janji Bluebird?
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!