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!