Heim  >  Artikel  >  Web-Frontend  >  Wie verwende ich Async/Await mit Rückrufen in JavaScript?

Wie verwende ich Async/Await mit Rückrufen in JavaScript?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 11:11:05555Durchsuche

 How to Utilize Async/Await with Callbacks in JavaScript?

Warten auf Rückruflösung

In einem Szenario, in dem ein einfacher Rückruf verwendet wird, wie im folgenden Beispiel:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}

Die Konvertierung dieser Funktion zur Verwendung von async/await erfordert eine geringfügige Änderung. Unter der Annahme, dass „someEvent“ garantiert nur einmal aufgerufen wird, kann die „test“-Funktion in eine asynchrone Funktion umgewandelt werden, die auf die Ausführung des Rückrufs wartet:

async test() {
  return await api.on( 'someEvent' );
}

Async/await ist jedoch nicht von Natur aus fähig Rückrufe direkt zu bearbeiten. Um diese Lücke zu schließen, muss api.on() neu gestaltet werden, um ein Versprechen zurückzugeben. Hier ist ein Beispiel:

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}

Mit dieser Änderung kann die Funktion „test“ jetzt wie folgt geschrieben werden:

async function test() {
  return await apiOn( 'someEvent' ); 
}

Bitte beachten Sie, dass das Schlüsselwort „await“ in diesem Zusammenhang im Wesentlichen optional ist. da jeder Ansatz immer noch dazu führt, dass ein Versprechen zurückgegeben wird.

Abschließend ist es wichtig, sich daran zu erinnern, dass asynchrone Funktionen selbst Versprechen zurückgeben. Daher ist ein direkter Zugriff auf den von „test()“ zurückgegebenen Wert nicht möglich. Stattdessen muss das zurückgegebene Versprechen behandelt werden:

async function whatever() {
  // snip
  const response = await test();
  // use response here
  // snip
}

Das obige ist der detaillierte Inhalt vonWie verwende ich Async/Await mit Rückrufen in 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