Supposons que vous ayez besoin d'effectuer certaines opérations qui dépendent d'un fichier temporaire. Puisque nous parlons de Node ici, ces opérations sont évidemment asynchrones. Quelle est la façon idiomatique d'attendre que toutes les opérations se terminent pour savoir quand le fichier temporaire peut être supprimé ? savoir quand le fichier temporaire peut être supprimé ?
Voici un code montrant ce que je veux faire :
do_something(tmp_file_name, function(err) {});
do_something_other(tmp_file_name, function(err) {});
fs.unlink(tmp_file_name);
Mais si je l'écris de cette façon, le troisième appel peut être exécuté avant les deux premiers n'aient eu la chance d'utiliser le fichier. J'ai besoin d'un moyen pour garantir que les deux premiers appels premiers appels sont déjà terminés (ont invoqué leurs callbacks) avant de passer à autre chose sans les appels (et les rendre synchrones en pratique).
J'ai pensé à utiliser des émetteurs d'événements sur les callbacks et à enregistrer un compteur comme récepteur. Le compteur recevrait les événements terminés et compterait combien d'événements opérations sont encore en attente. Lorsque la dernière opération est terminée, il supprime le fichier fichier. Mais il y a le risque d'une condition de course et je ne suis pas sûr que ce soit que ce soit la façon habituelle de faire ce genre de choses.
Comment les gens de Node résolvent-ils ce genre de problème ?
0 votes
Merci pour cette question, j'ai aussi un problème similaire.