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
Susan SarandonOriginal
2024-10-29 14:16:02543Durchsuche

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;
  });
}

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' );
}

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));
  });
}

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

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

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
}

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!

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