Heim  >  Artikel  >  Web-Frontend  >  Wie kann ein Fehler in einer asynchronen Generatorfunktion in JavaScript ausgelöst werden?

Wie kann ein Fehler in einer asynchronen Generatorfunktion in JavaScript ausgelöst werden?

WBOY
WBOYnach vorne
2023-08-29 08:49:021148Durchsuche

如何在 JavaScript 中的异步生成器函数中引发错误?

Code löst häufig Fehler aus, und der Umgang mit Fehlern ist wichtiger. Mit JavaScript können Benutzer auch benutzerdefinierte Fehler mithilfe des Schlüsselworts „throw“ auslösen. Wir können Fehler im Catch-Block abfangen.

Wir können die Try-Catch-Syntax verwenden, um Fehler abzufangen, die von gewöhnlichen Funktionen ausgelöst werden. Lassen Sie es uns anhand des folgenden Beispiels verstehen.

Beispiel 1 (Fehler in der regulären Funktion auslösen)

Im folgenden Beispiel haben wir die reguläre Funktion throwError() erstellt, die mithilfe des Schlüsselworts throw einen Fehler mit einer benutzerdefinierten Fehlermeldung auslöst. Wir haben die Funktion innerhalb des try-Blocks ausgeführt. Wenn die Funktion einen Fehler auslöst, geht die Kontrolle an den Catch-Block und so erkennen wir den Fehler.

<html>
<body>
   <h3> Using the throw keyword to throw an error from the normal function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      function throwError() {
         throw new Error('Error from normal function');
      }
      try {
         throwError();
      } catch (e) {
         content.innerHTML = e;
      }
   </script>
</body>
</html>

Wenn wir die Funktion throwError() asynchron machen, wird ein weiterer Fehler generiert, da wir den Try-Catch-Block verwenden können, um von synchronen Funktionen ausgelöste Fehler zu behandeln.

Um dieses Problem zu beheben, müssen Benutzer die Then-Catch-Blocksyntax verwenden, um Versprechen aufzulösen.

Grammatik

Benutzer können der folgenden Syntax folgen, um von asynchronen Funktionen ausgelöste Fehler zu beheben.

throwError().then((res) => {
   // print content
}).catch((err) => {
   // print error message
})

In der obigen Syntax ist throwError() eine Funktion, die ein Promise zurückgibt, und wir verwenden then- und Catch-Blöcke, um dieses Problem zu lösen.

Beispiel 2 (Async-Funktion löst Fehler aus)

Im folgenden Beispiel ist die Funktion throwError() eine asynchrone Funktion, da wir das Schlüsselwort „async“ vor dem Schlüsselwort function hinzugefügt haben. Wir haben Fehler von der asynchronen Funktion ausgegeben, genau wie wir es von einer regulären Funktion tun würden.

Danach bearbeiten wir das Promise mit den Blöcken then und Catch. In der Ausgabe kann der Benutzer beobachten, dass die Kontrolle an den Catch-Block geht, wenn die asynchrone Funktion einen Fehler auslöst.

<html>
<body>
   <h3> Using the <i> throw </i> keyword to throw an error from the async function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      async function throwError() {
         throw new Error('Error from Async function');
      }
      throwError().then((res) => {
         content.innerHTML = res;
      }).catch((err) => {
         content.innerHTML = err;
      })
   </script>
</body>
</html>

Beispiel 3 (Auslösen eines Fehlers durch Ablehnung eines Versprechens in einer asynchronen Funktion)

Wir können Versprechen von asynchronen Funktionen zurückgeben. Das Ablehnen eines Versprechens in einer asynchronen Funktion ist wie das Auslösen eines Fehlers. Wir verwenden die Methode „reject()“ in der Callback-Funktion, um das Versprechen abzulehnen.

Der „then-catch“-Block wird verwendet, um das von der Funktion zurückgegebene Versprechen aufzulösen, und der Benutzer kann sehen, wie die Steuerung zum Catch-Block wechselt.

<html>
<body>
   <h3> Using the <i> reject </i> method to throw an error from the async function </h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      // throw error from normal function
      async function throwError() {
         return new Promise((resolve, reject) => {
            reject("This promise is rejected from the async function." );
         });
      }
      throwError().then((res) => {
         content.innerHTML = res;
      }).catch((err) => {
         content.innerHTML = err;
      })
   </script>
</body>
</html>

Benutzer haben gelernt, wie man Fehler aus asynchronen Funktionen auslöst. Benutzer können das Schlüsselwort „throw“ verwenden, um Fehler wie bei regulären Funktionen auszulösen. Benutzer müssen „then-catch“-Blöcke verwenden, um Fehler zu behandeln, da asynchrone Funktionen Promise zurückgeben, anstatt Try-catch-Blöcke zu verwenden.

Das obige ist der detaillierte Inhalt vonWie kann ein Fehler in einer asynchronen Generatorfunktion in JavaScript ausgelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen