Rumah >hujung hadapan web >tutorial js >Bagaimana Mengendalikan Pengecualian dalam Panggilan Balik Asynchronous dengan Bluebird Promises?

Bagaimana Mengendalikan Pengecualian dalam Panggilan Balik Asynchronous dengan Bluebird Promises?

Barbara Streisand
Barbara Streisandasal
2024-11-02 02:24:02721semak imbas

How to Handle Exceptions in Asynchronous Callbacks with Bluebird Promises?

Pengendalian Pengecualian Asynchronous dengan Bluebird Promises

Pertimbangkan senario berikut: anda perlu mengendalikan pengecualian dalam persekitaran terkawal tanpa merosakkan aplikasi. Mari kita periksa contoh khusus ini menggunakan janji Bluebird:

<code class="javascript">var Promise = require('bluebird');

function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(function(){
                throw new Error("AJAJAJA");
        }, 500);
    });
}</code>

Apabila pengecualian dilemparkan dalam panggilan balik setTimeout, ia ditangkap oleh gelung acara Node.js dan dilog ke konsol, menyebabkan program ranap:

$ node bluebird.js

c:\blp\rplus\bbcode\scratchboard\bluebird.js:6
                throw new Error("AJAJAJA");
                      ^
Error: AJAJAJA
    at null._onTimeout (c:\blp\rplus\bbcode\scratchboard\bluebird.js:6:23)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

Janji, bagaimanapun, boleh menangkap pengecualian yang dilemparkan dari dalam panggilan balik pembina mereka. Untuk mengendalikan pengecualian yang dilemparkan dalam panggilan balik tak segerak, anda harus membalut panggilan balik dengan janji yang menolak apabila ralat.

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

Dalam contoh yang diubah suai ini, pengecualian ditangkap oleh rantai janji di sekeliling:

$ node bluebird.js
Error [Error: Oh no!]

Ingat, janji tidak mendapat pengecualian daripada panggilan balik tak segerak. Sentiasa tolak janji sekeliling dalam kes sedemikian, dan gunakan blok cuba-tangkap jika perlu. Pendekatan ini memastikan bahawa pengecualian dikendalikan dengan anggun tanpa merosakkan aplikasi.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian dalam Panggilan Balik Asynchronous dengan Bluebird Promises?. 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