Maison > interface Web > js tutoriel > Les promesses de Node.js (ES7) peuvent-elles implémenter « Fire and Forget » de manière asynchrone, et quels sont les risques ?

Les promesses de Node.js (ES7) peuvent-elles implémenter « Fire and Forget » de manière asynchrone, et quels sont les risques ?

Susan Sarandon
Libérer: 2024-11-27 13:23:18
original
779 Les gens l'ont consulté

Can Node.js (ES7) Promises Implement

Fire et oublier les promesses dans Node.js (ES7)

Dans la programmation asynchrone, il est courant d'exécuter des tâches sans attendre leurs résultats . Pouvez-vous faire cela avec des promesses dans Node.js (ES7) ?

Question :

Considérez l'extrait de code suivant :

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();
Copier après la connexion

Peut-on vous enveloppez la première ligne dans une fonction asynchrone sans l'attendre ? Que se passe-t-il si vous le faites ?

Réponse :

Oui, vous pouvez exécuter les deux fonctions asynchrones en parallèle sans attendre l'appel delAsync. En créant et en rejetant la promesse, vous la « renvoyez et l'oubliez ».

Pourquoi n'est-ce pas idéal ?

Cette approche présente un inconvénient important. Si la promesse delAsync est rejetée, vous ne serez pas averti. Cela pourrait entraîner des erreurs de rejet non gérées et des plantages potentiels.

Approches alternatives :

  • Attendez la promesse : Si vous souhaitez gérer effets secondaires ou exceptions, vous devez attendre la promesse. Cependant, si vous n'avez pas besoin de son résultat, vous pouvez le supprimer en utilisant void (attendre someAsyncFunction()).
  • Attrapez les exceptions : Si vous ne vous souciez pas du résultat mais que vous souhaitez pour intercepter les exceptions, vous pouvez utiliser ...someAsyncFunction().catch(function ignore() {})....
  • Exécuter des fonctions dans parallel: Pour exécuter les tâches delAsync et someOtherAsyncFunction simultanément, vous pouvez utiliser Promise.all():

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;
    Copier après la connexion

    Dans ce cas, le résultat de delAsync est ignoré, mais des exceptions sont toujours levées.

Conclusion :

Pendant que « feu et oublier" peut être pratique, il est essentiel de considérer les conséquences potentielles. En définissant clairement vos besoins (attente, gestion des résultats et capture des exceptions), vous pouvez garantir une gestion appropriée des tâches asynchrones dans vos applications Node.js.

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