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 ?
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();
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 :
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;
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!