J'ai une fonction http Firebase qui ajoute des données à une liste de base de données Firebase. Une deuxième fonction est configurée pour traiter la liste lorsqu'elle change, puis mettre à jour certaines données récapitulatives. Dans mon cas, ces mises à jour viennent en rafales. J'utilise les fonctions firebase de node.js.Comment gérer l'ordre d'exécution de la fonction de déclenchement de la base de données incendie
En regardant les journaux firebase, je vois cette séquence en commençant avec une liste vide:
- Ajouter à la liste de http - liste comporte une élément
- Ajouter à la liste de http - liste dispose de 2 éléments
- ajouter à la liste de http - liste comporte 3 éléments
- ajouter à la liste de http - liste comporte 4 éléments
- liste de résumer avec 1 élément
- Résumer liste avec 3 éléments
- Résumer liste avec 4 éléments
- Résumer liste avec 2 éléments
Mon problème est le résumé ne comprend que 2 éléments au lieu de 4.
Il semblerait le Résumer Les fonctions de déclenchement sont invoquées en parallèle au lieu de séquentielles. Ainsi, lorsque plusieurs déclencheurs se trouvent à proximité, le dernier à terminer peut être l'un des premiers déclenchés à la place du dernier.
Quelles approches peuvent être utilisées pour s'assurer que le calcul de résumé a 'toutes les données' et qu'un calcul de résumé antérieur plus lent ne remplace pas un plus récent? Les déclencheurs de la fonction firebase peuvent-ils être sérialisés pour s'exécuter dans l'ordre dans lequel ils ont été initiés? Idéalement, je voudrais éviter de calculer le N fois le résumé quand une rafale arrive donc une solution où le résumé pourrait être 'programmé' pour un peu de temps dans le futur et ensuite annulé et reprogrammé si un nouvel événement arrive ce serait bien.
Il ne semble pas déraisonnable e dans le contexte de firebase pour qu'il finisse un 'onChange' avant de servir le suivant. Surtout depuis qu'il passe dans le nouvel état au gestionnaire. Je veux juste que le résumé final sache qu'il utilise toutes les données disponibles. Je pourrais ajouter une mise à jour périodique mais une mise à jour déclenchée par des données semble plus propre. – Glenn
Comment proposeriez-vous de synchroniser toutes les instances en cours d'onChange, pour le chemin individuel (avec wildcard (s)), parmi toutes les instances de serveur qui pourraient l'exécuter? Surtout qu'ils pourraient tous faire un travail de blocage qui pourrait prendre énormément de temps? –