Événement déclenché chaque fois qu'un handler est ajouté via add ou push.
Initialisé de façon lazy via _p_initOnHandlerAdded lors du premier accès — aucun coût si personne ne s'y abonne.
Événement déclenché une seule fois lorsque tous les handlers sont supprimés via clear.
Initialisé de façon lazy via _p_initOnHandlerCleared lors du premier accès — aucun coût si personne ne s'y abonne.
Événement déclenché chaque fois qu'un handler est retiré via remove.
Initialisé de façon lazy via _p_initOnHandlerRemoved lors du premier accès — aucun coût si personne ne s'y abonne.
Protected_ProtectedRetourne les données associées à la clé donnée, ou null si la clé
n'existe pas.
Point d'accès protégé au dictionnaire interne — permet aux classes
concrètes d'accéder aux données d'un callback sans exposer
#_callbacks directement.
La clé du callback à récupérer.
Les données du callback, ou null si la clé est absente.
Protected_ProtectedInitialise l'instance de onHandlerAdded.
Une nouvelle instance de EventHandler.
Protected_ProtectedInitialise l'instance de onHandlerCleared.
Une nouvelle instance de EventHandler.
Protected_ProtectedInitialise l'instance de onHandlerRemoved.
Une nouvelle instance de EventHandler.
Déclenche la chaîne de callbacks et retourne le record final.
Le record initial transmis au premier callback.
Si ce n'est pas un plain object, la chaîne s'exécute sur {}.
Arguments supplémentaires — ignorés, conservés pour la compatibilité avec l'ancienne signature.
Le record final après passage dans tous les callbacks,
ou null si aucun callback n'est enregistré.
Si invoke retourne un résultat de type 'other' —
état normalement inatteignable puisque invoke garantit
que le paramètre transmis est toujours un plain object.
invoke — variante retournant un CircularEventCallResult discriminé
Utilisez CircularEventDelegate ou CircularEventHandler et leur méthode invoke à la place.
Supprime tous les callbacks enregistrés en une seule opération O(1).
Capture la liste des callbacks avant l'effacement, puis déclenche onHandlerCleared après — garantissant que la Map est vide avant la notification, sans risque de double déclenchement si un observateur appelle add dans son callback.
L'instance courante pour permettre le chaînage.
Retourne la liste des callbacks actuellement enregistrés, dans leur ordre d'enregistrement.
Équivalent de
Delegate.GetInvocationList()
en C#.
Un tableau contenant tous les callbacks enregistrés.
Vérifie si un callback est enregistré sous la clé donnée.
La clé à vérifier.
true si un callback existe pour cette clé, false sinon.
Indique si au moins un callback est enregistré.
true si l'événement a au moins un callback, false sinon.
Déclenche la chaîne de callbacks en propageant un record muté de l'un à l'autre.
Construit à chaque appel un CircularEventDelegate éphémère, y transfère tous les callbacks enregistrés dans leur ordre d'enregistrement, déclenche la propagation, puis efface le délégué temporaire.
Si args[0] n'est pas un plain object, il est silencieusement remplacé par {}
— la chaîne s'exécute alors sur un record vide.
Arguments transmis à la chaîne. Seul args[0] est utilisé comme
record initial ; les arguments suivants sont ignorés.
Un CircularEventCallResult décrivant le résultat :
{ type: 'empty' } si aucun callback n'est enregistré.{ type: 'record', value } si la chaîne s'est exécutée normalement.const event = new JsCircularEvent<(p: { value: number }) => { value: number }>();
event.add('double', ({ value }) => ({ value: value * 2 }));
const result = event.invoke({ value: 5 });
if (result.type === 'record') {
console.log(result.value); // { value: 10 }
}
CircularEventDelegate.invoke pour l'implémentation sans reconstruction
Supprime le callback associé à la clé donnée et le retourne.
Déclenche onHandlerRemoved si des observateurs sont abonnés.
La clé du callback à supprimer.
Le callback supprimé, ou null si la clé n'existe pas.
Gestionnaire d'événements circulaire — version historique de CircularEventDelegate.
JsCircularEventpropage un record muté de callback en callback, en déléguant chaque invocation à un CircularEventDelegate éphémère reconstruit à chaque appel. Cette reconstruction systématique est la principale raison de la dépréciation : elle est inutilement coûteuse et ne présente aucun avantage par rapport à l'utilisation directe de CircularEventDelegate.Si
args[0]n'est pas un plain object, il est silencieusement remplacé par{}avant d'être transmis à la chaîne — contrairement à CircularEventDelegate qui émet un avertissement et encapsule la valeur dans{ default: valeur }.Example
See
Deprecated
Utilisez CircularEventDelegate ou CircularEventHandler à la place.