Bagaimana Mengendalikan Pengecualian dalam Panggilan Balik Asynchronous dengan Bluebird Promises?

Barbara Streisand
Lepaskan: 2024-11-02 02:24:02
asal
618 orang telah melayarinya

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

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

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

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

$ node bluebird.js
Error [Error: Oh no!]
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
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!