Heim > Web-Frontend > js-Tutorial > Was ist der Unterschied zwischen Promise.reject() und dem Auslösen von Fehlern in JavaScript-Promises?

Was ist der Unterschied zwischen Promise.reject() und dem Auslösen von Fehlern in JavaScript-Promises?

Linda Hamilton
Freigeben: 2024-10-24 02:48:29
Original
488 Leute haben es durchsucht

What's the Difference Between Promise.reject() and Throwing Errors in JavaScript Promises?

JavaScript-Promises: Erkundung der Unterscheidung zwischen „reject()“ und „throw()“

Promises in JavaScript bieten einen leistungsstarken Mechanismus für die Handhabung asynchroner Vorgänge. Die Behandlung von Fehlern und Ablehnungen in Promises hat Fragen zu den Unterschieden zwischen der Verwendung von Promise.reject() und dem einfachen Auslösen eines Fehlers aufgeworfen.

Verwendungsvergleich

Der folgende Code Snippets veranschaulichen die Verwendung beider Methoden:

<code class="javascript">// Using Promise.reject()
return asyncIsPermitted()
    .then(result => {
        if (result === true) {
            return true;
        } else {
            return Promise.reject(new PermissionDenied());
        }
    });</code>
Nach dem Login kopieren
<code class="javascript">// Using throw
return asyncIsPermitted()
    .then(result => {
        if (result === true) {
            return true;
        } else {
            throw new PermissionDenied();
        }
    });</code>
Nach dem Login kopieren

Unterschied im Verhalten

Im Allgemeinen gibt es keinen funktionalen Unterschied zwischen der Verwendung von Promise.reject() und Auslösen eines Fehlers innerhalb eines Promise-Rückrufs. Beides führt dazu, dass das Versprechen abgelehnt und der Ablehnungshandler aufgerufen wird.

Ausnahme von der Regel

Eine Ausnahme tritt jedoch auf, wenn der Fehler außerhalb von a ausgelöst wird Versprochener Rückruf. In diesem Fall muss Promise.reject() verwendet werden, um den Fehler in die Promise-Kette zu propagieren. Beispielsweise löst der folgende Code den Catch-Block nicht aus:

<code class="javascript">new Promise(function() {
  setTimeout(function() {
    throw 'or nah';
    // return Promise.reject('or nah'); also won't work
  }, 1000);
}).catch(function(e) {
  console.log(e); // doesn't happen
});</code>
Nach dem Login kopieren

Um Fehler zu verarbeiten, die außerhalb eines Promise-Rückrufs ausgegeben werden, verwenden Sie Promise.reject(), um sie in Promise-Ablehnungen umzuwandeln.

Fazit

Während die Verwendung einer Methode gegenüber der anderen innerhalb eines Promise-Rückrufs keinen inhärenten Vorteil bietet, ist Promise.reject() bei der Behandlung von Fehlern außerhalb von Promise-Rückrufen von entscheidender Bedeutung. Das Verständnis dieser Unterscheidung gewährleistet eine ordnungsgemäße Fehlerbehandlung und eine effiziente asynchrone Programmierung.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Promise.reject() und dem Auslösen von Fehlern in JavaScript-Promises?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage