„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gehen Sie mit nicht behandelten Ausnahmen in asynchronen Rückrufen mit Bluebird-Versprechen um?

Wie gehen Sie mit nicht behandelten Ausnahmen in asynchronen Rückrufen mit Bluebird-Versprechen um?

Veröffentlicht am 21.11.2024
Durchsuche:728

How do you handle unhandled exceptions in asynchronous callbacks with Bluebird promises?

Asynchrone Ausnahmebehandlung mit Bluebird-Versprechen

F: Wie behandelt man nicht behandelte Ausnahmen in asynchronen Rückrufen mit Bluebird-Versprechen?

Bluebird-Versprechen fangen im Gegensatz dazu nicht von Natur aus Ausnahmen ab, die von asynchronen Rückrufen ausgelöst werden Domänen.

A: Verwenden Sie Promise-Konstruktoren oder then()-Abschlüsse, um Ausnahmen zu behandeln.

Um Ausnahmen in asynchronen Rückrufen abzufangen, schließen Sie den Rückruf in einen Promise-Konstruktor ein oder then( ) Abschluss:

function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(function(){
            throw new Error("AJAJAJA");
        }, 500);
    }).then(function() {
        console.log("hihihihi");
        throw new Error("Oh no!");
    });
}

Vermeiden Sie das Auslösen benutzerdefinierter asynchroner Rückrufe.

Lösen Sie niemals Ausnahmen direkt in benutzerdefinierten asynchronen Rückrufen (außer bei Promise-Rückrufen). Lehnen Sie stattdessen das umgebende Versprechen ab:

function getPromise(){
    return new Promise(function(done, reject){
        setTimeout(done, 500);
    }).then(function() {
        console.log("hihihihi");
        reject(new Error("Oh no!"));
    });
}

Beispiel

Verwendung eines Promise-Konstruktors:

var p = getPromise();
    p.then(function(){
        console.log("Yay");
    }).error(function(e){
        console.log("Rejected",e);
    }).catch(Error, function(e){
        console.log("Error",e);
    }).catch(function(e){
        console.log("Unknown", e);
    });

Ausgabe:

Error [Error: Oh no!]

Dieser Ansatz stellt sicher, dass Ausnahmen abgefangen und ordnungsgemäß behandelt werden, sodass die Anwendung nicht abstürzt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3