Heim >Web-Frontend >js-Tutorial >Was ist der Unterschied zwischen „Return Wait Promise' und „Return Promise' in asynchronem JavaScript?

Was ist der Unterschied zwischen „Return Wait Promise' und „Return Promise' in asynchronem JavaScript?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-28 06:20:15547Durchsuche

What's the Difference Between `return await Promise` and `return Promise` in Asynchronous JavaScript?

Den Unterschied zwischen Return-Await-Promise und Return-Promise verstehen

In asynchronem JavaScript war das Verhalten von Return-Await-Promise und Return-Promise oft anders ein Thema der Debatte. Obwohl es sich bei beiden Ausdrücken um die Rückgabe von Versprechen handelt, können in bestimmten Szenarien geringfügige Unterschiede auftreten.

Asynchrone Funktionen

In den bereitgestellten Codebeispielen sind zwei asynchrone Funktionen (delay1Second) definiert. Die erste Funktion verwendet Return Wait, um das Ergebnis des Verzögerungsversprechens in ein anderes Versprechen zu verpacken, während die zweite Funktion das Verzögerungsversprechen einfach zurückgibt, ohne darauf zu warten.

Beobachtbares Verhalten

In den meisten Fällen ist kein Unterschied zwischen diesen beiden Konstrukten erkennbar. Beide „delay1Second“-Funktionen geben Versprechen zurück, die nach 1 Sekunde aufgelöst werden. Wie in der Frage erwähnt, verbraucht die Return-Await-Version jedoch aufgrund der Erstellung eines Zwischenversprechungsobjekts möglicherweise etwas mehr Speicher.

Ausnahmebehandlung

Allerdings a Ein entscheidender Unterschied ergibt sich, wenn diese Ausdrücke in Try-Catch-Blöcken verwendet werden. Betrachten Sie das folgende Beispiel:

async function rejectionWithReturnAwait() {
  try {
    return await Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}

async function rejectionWithReturn() {
  try {
    return Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}

In der ersten Funktion (rejectionWithReturnAwait) wird die Rückgabe in „await“ eingeschlossen. Das bedeutet, dass die Funktion auf die Ablehnung des abgelehnten Versprechens wartet, was dazu führt, dass eine Ausnahme innerhalb des asynchronen Blocks ausgelöst wird. Als Ergebnis wird der Catch-Handler erreicht und die Funktion gibt ein Versprechen zurück, das in „Gespeichert!“ aufgelöst wird.

Umgekehrt wird in der zweiten Funktion (rejectionWithReturn) das Versprechen direkt zurückgegeben, ohne dass es innerhalb der Asynchronität abgewartet wird Funktion. Dies bedeutet, dass die Ausnahme nicht innerhalb des asynchronen Blocks auftritt und der Catch-Handler nicht ausgeführt wird. Stattdessen erhält der Anrufer einfach das abgelehnte Versprechen.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „Return Wait Promise' und „Return Promise' in asynchronem JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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