Maison > interface Web > js tutoriel > le corps du texte

Comment utiliser Async/Await avec des rappels en JavaScript ?

Linda Hamilton
Libérer: 2024-10-30 11:11:05
original
554 Les gens l'ont consulté

 How to Utilize Async/Await with Callbacks in JavaScript?

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;
  });
}
Copier après la connexion

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' );
}
Copier après la connexion

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));
  });
}
Copier après la connexion

Avec cette modification, la fonction 'test' peut désormais s'écrire comme :

async function test() {
  return await apiOn( 'someEvent' ); 
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!