Heim > Web-Frontend > js-Tutorial > Wie verwende ich Async/Await, um die Ausführung von Rückrufen in JavaScript anzuhalten?

Wie verwende ich Async/Await, um die Ausführung von Rückrufen in JavaScript anzuhalten?

Susan Sarandon
Freigeben: 2024-10-29 14:16:02
Original
534 Leute haben es durchsucht

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

Async/Await verwenden, um die Ausführung für Rückrufe anzuhalten

Beim Umgang mit Rückrufen kann es wünschenswert sein, die Ausführung einer Funktion bis zum Rückruf anzuhalten hat einen Wert zurückgegeben. Bei der synchronen Programmierung kann dies durch Blockierungsmechanismen wie join() erreicht werden. Bei der asynchronen Programmierung ist dies jedoch oft unerwünscht.

Angenommen, Sie haben eine Rückruffunktion, die garantiert genau einmal aufgerufen wird, und Sie möchten die folgende Funktion so ändern, dass sie async/await verwendet:

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}
Nach dem Login kopieren

Das Ziel besteht darin, sie in eine asynchrone Funktion umzuwandeln, die auf die Ausführung des Rückrufs wartet, etwa so:

async test() {
  return await api.on( 'someEvent' );
}
Nach dem Login kopieren

Async/await allein kann dies nicht erreichen, da dafür ein Promise von der API zurückgegeben werden muss .An(). Um dies zu beheben, können wir den Rückruf in eine Promise-Rückgabefunktion einschließen:

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

Jetzt können wir test() als asynchrone Funktion umschreiben:

async function test() {
  return await apiOn( 'someEvent' ); // await is optional here (returns a Promise)
}
Nach dem Login kopieren

Beachten Sie, dass async Funktionen geben auch selbst Versprechen zurück. Um das tatsächliche Ergebnis von test() zu erhalten, muss es in einer äußeren asynchronen Funktion abgewartet werden:

async function whatever() {
  const response = await test();
  // use response here
}
Nach dem Login kopieren

Durch die Nutzung der Promise-Wrapping-Funktion können wir async/await verwenden, um die Ausführung von effektiv anzuhalten test(), bis der Rückruf einen Wert zurückgegeben hat.

Das obige ist der detaillierte Inhalt vonWie verwende ich Async/Await, um die Ausführung von Rückrufen in JavaScript anzuhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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