Attendre la résolution du rappel
Dans un scénario où un simple rappel est utilisé, comme dans l'exemple ci-dessous :
test() { api.on( 'someEvent', function( response ) { return response; }); }
la conversion de cette fonction pour utiliser async/await nécessite une légère modification. En supposant que 'someEvent' soit garanti d'être invoqué une seule fois, la fonction 'test' peut être transformée en une fonction asynchrone qui attend l'exécution du rappel :
async test() { return await api.on( 'someEvent' ); }
Cependant, async/await n'est pas intrinsèquement capable de gérer directement les rappels. Pour combler cette lacune, api.on() doit être repensé pour renvoyer une promesse. Voici un exemple :
function apiOn(event) { return new Promise(resolve => { api.on(event, response => resolve(response)); }); }
Avec cette modification, la fonction 'test' peut désormais s'écrire comme :
async function test() { return await apiOn( 'someEvent' ); }
Veuillez noter que le mot-clé wait est essentiellement facultatif dans ce contexte, car l'une ou l'autre approche entraînera toujours le retour d'une promesse.
Enfin, il est important de se rappeler que les fonctions asynchrones elles-mêmes renvoient des promesses. En tant que tel, accéder directement à la valeur renvoyée par 'test()' n'est pas possible. Au lieu de cela, la promesse renvoyée doit être traitée :
async function whatever() { // snip const response = await test(); // use response here // snip }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!