Maison > interface Web > js tutoriel > Le tir et l'oubli des promesses dans Node.js sont-ils acceptables ?

Le tir et l'oubli des promesses dans Node.js sont-ils acceptables ?

Linda Hamilton
Libérer: 2024-11-30 18:39:11
original
361 Les gens l'ont consulté

Is Firing and Forgetting Promises in Node.js Acceptable?

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

La programmation asynchrone dans Node.js implique souvent de travailler avec des promesses. Les promesses représentent l'achèvement ou l'échec éventuel d'une opération asynchrone. Dans certains scénarios, vous souhaiterez peut-être lancer une opération asynchrone sans attendre son achèvement. C'est ce qu'on appelle « tirer et oublier » une promesse.

Considérez l'extrait de code suivant :

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

Dans une fonction asynchrone, vous pouvez exécuter la première ligne sans utiliser wait. Cela crée une promesse et l'écarte immédiatement.

Est-ce acceptable ?

Oui, il est possible d'exécuter des tâches asynchrones de cette manière. En déclenchant et en oubliant la promesse, les deux fonctions asynchrones (création de promesse et la fonction someOtherAsyncFunction) s'exécuteront simultanément.

Gestion des erreurs

Un problème potentiel avec cette approche est que si la promesse créée par delAsync est rejetée, vous ne serez pas averti. Cela peut conduire à des rejets non gérés qui finissent par faire planter votre processus.

Alternatives pour ignorer les résultats

Si vous ne vous souciez pas du résultat d'une opération asynchrone, il existe plusieurs façons de le gérer :

  • Opérateur du vide : Utilisez le vide opérateur pour ignorer le résultat :

    void (await someAsyncFunction());
    Copier après la connexion
  • Catch and Ignore : Ignorer les exceptions en utilisant la méthode catch avec un gestionnaire vide :

    ... someAsyncFunction().catch(function ignore() {}) ...
    Copier après la connexion
  • Exécution parallèle : Si vous souhaitez toujours attendre d'autres opérations asynchrones mais ne vous souciez pas du résultat d'une opération spécifique, utilisez Promise.all avec un tableau :

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

Conclusion

Bien qu'il soit possible de déclencher et d'oublier des promesses dans Node.js, il est important d'être conscient des risques potentiels associés au fait d'ignorer les refus. Réfléchissez bien si vous ne vous souciez vraiment pas du résultat d'une opération asynchrone avant d'employer cette technique. De plus, il existe des approches alternatives pour gérer les résultats qui ne présentent pas d'intérêt.

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