JavaScript-Versprechen - Ablehnung vs.

Habe ich gelesen, mehrere Artikel zu diesem Thema, aber es ist immer noch nicht klar ist mir, ob es einen Unterschied zwischen Promise.reject vs. werfen einen Fehler. Zum Beispiel,

Mit Versprechen.ablehnen

return asyncIsPermitted()
    .then(function(result) {
        if (result === true) {
            return true;
        }
        else {
            return Promise.reject(new PermissionDenied());
        }
    });

Mit werfen

return asyncIsPermitted()
    .then(function(result) {
        if (result === true) {
            return true;
        }
        else {
            throw new PermissionDenied();
        }
    });

Meine Vorliebe ist die Verwendung throw einfach, weil es kürzer ist, aber Frage mich, ob es keinen Vorteil des einen über den anderen.

Kommentar zu dem Problem
Beide Methoden erzeugen die exakt gleiche Reaktion. Die .dann ist() - handler fängt die geworfene Ausnahme und verwandelt es in eine abgelehnt Versprechen automatisch. Da ich gelesen habe, dass Ausnahmen ausgelöst werden, nicht besonders schnell ausführen, würde ich vermuten, dass eine Rücksendung der beanstandeten Versprechen könnten etwas schneller ausgeführt werden, aber Sie würde zu entwickeln, einen test in mehreren modernen Browsern, wenn das wichtig zu wissen. Ich persönlich nutze werfen, weil ich gerne die Lesbarkeit. Kommentarautor: jfriend00
@webduvet nicht mit Versprechungen - Sie sind entworfen, um mit zu werfen. Kommentarautor: joews
Ein Nachteil werfen ist, dass es nicht Folge eines abgelehnten Versprechen, wenn er ausgelöst wurde, innerhalb von ein asynchroner Rückruf, wie ein setTimeout. jsfiddle.net/m07van33 @Blondie Ihre Antwort richtig war. Kommentarautor: Kevin B
@joews es bedeutet nicht, dass es gut ist 😉 Kommentarautor: webduvet
Ah, stimmt. So eine Klarstellung zu meinem Kommentar wäre, "wenn er ausgelöst wurde, von einer asynchronen callback - das war nicht promisified". Ich wusste, es war eine Ausnahme, ich konnte mich einfach nicht erinnern, was es war. Auch ich bevorzuge werfen, einfach weil ich finde, es ist besser lesbar und ermöglicht es mir, ohne ablehnen es von meinem param-Liste. Kommentarautor: Kevin B

InformationsquelleAutor der Frage Naresh | 2015-10-30

Schreibe einen Kommentar