@rotomeca/event - v5.0.0
    Preparing search index...

    Interface IEventHandler<TArgs, T, TResult>

    Représente un gestionnaire d'événement typé auquel on peut attacher, retirer et déclencher des callbacks.

    Inspiré du pattern event de C#, mais enrichi d'une valeur de retour sur les callbacks pour permettre des usages plus avancés.

    const onClick: IEventHandler<[MouseEvent]> = new EventHandler();

    onClick.add('handler', (e) => console.log(e.clientX));
    onClick.invoke(new MouseEvent('click'));
    interface IEventHandler<
        TArgs extends any[] = any[],
        T extends Func<TArgs> = Func<TArgs>,
        TResult = EventCallResult<T>,
    > {
        get keys(): string[];
        get onHandlerAdded(): IEventHandler<
            [key: string, callbackAdded: T],
            HandlerAddedCallback<TArgs, T>,
        >;
        get onHandlerCleared(): IEventHandler<
            [callbacksCleared: T[]],
            HandlerClearedCallback<TArgs, T>,
        >;
        get onHandlerRemoved(): IEventHandler<
            [key: string, callbackRemoved: MayBe<T>],
            HandlerRemovedCallback<TArgs, T>,
        >;
        add(key: string, event: T, ...args: Partial<TArgs>): this;
        clear(): this;
        count(): uint;
        getInvocationList(): T[];
        has(key: string): boolean;
        haveEvents(): boolean;
        invoke(...args: TArgs): TResult;
        push(event: T, ...args: Partial<TArgs>): string;
        remove(key: string): MayBe<T>;
    }

    Type Parameters

    • TArgs extends any[] = any[]

      Tuple représentant les types des arguments transmis aux callbacks lors de l'appel. Par défaut any[].

    • T extends Func<TArgs> = Func<TArgs>

      Type des callbacks attachés à l'événement, doit étendre Func<TArgs>. Par défaut Func<TArgs>.

    • TResult = EventCallResult<T>

    Implemented by

    Index

    Accessors

    • get keys(): string[]

      Retourne la liste des clés des callbacks actuellement enregistrés.

      Returns string[]

      const keys = event.keys; // ['handler1', 'handler2']
      

    Methods

    • Ajoute un callback avec une clé spécifique.

      Équivalent de l'opérateur += en C#, avec contrôle explicite de l'identifiant.

      Parameters

      • key: string

        Clé identifiant le callback.

      • event: T

        Le callback à ajouter.

      • ...args: Partial<TArgs>

        Arguments par défaut transmis au callback à chaque appel.

      Returns this

      L'instance courante pour permettre le chaînage.

    • Supprime tous les callbacks enregistrés.

      Returns this

      L'instance courante pour permettre le chaînage.

      event.clear().add('handler', monCallback);
      
    • Retourne la liste des callbacks actuellement enregistrés.

      Équivalent de Delegate.GetInvocationList() en C# — permet d'inspecter les callbacks sans les déclencher, dans le même ordre qu'ils seront appelés lors d'un invoke.

      Returns T[]

      Un tableau contenant tous les callbacks enregistrés, dans leur ordre d'enregistrement.

      const handlers = event.getInvocationList();
      console.log(`${handlers.length} handler(s) enregistré(s)`);
    • Vérifie si un callback est enregistré sous la clé donnée.

      Parameters

      • key: string

        La clé à vérifier.

      Returns boolean

      true si un callback existe pour cette clé, false sinon.

      if (event.has('monHandler')) {
      event.remove('monHandler');
      }
    • Déclenche tous les callbacks enregistrés avec les arguments fournis.

      Équivalent de Invoke en C#. Le résultat dépend du nombre de callbacks enregistrés :

      • { type: 'empty' } si aucun callback n'est enregistré.
      • { type: 'single', value } si un seul callback est enregistré.
      • { type: 'multiple', values } si plusieurs callbacks sont enregistrés.

      Parameters

      • ...args: TArgs

        Arguments transmis à chaque callback lors de l'appel.

      Returns TResult

      Un EventCallResult décrivant le résultat de l'appel.

      const result = event.invoke('bonjour', 42);

      if (result.type === 'single') {
      console.log(result.value);
      }
    • Ajoute un callback en générant automatiquement une clé unique.

      Équivalent de l'opérateur += en C#.

      Parameters

      • event: T

        Le callback à ajouter.

      • ...args: Partial<TArgs>

        Arguments par défaut transmis au callback à chaque appel.

      Returns string

      La clé générée permettant de retrouver ce callback plus tard.

    • Supprime le callback associé à la clé donnée et le retourne.

      Équivalent de l'opérateur -= en C#. Utile pour récupérer un handler existant afin de le réenregistrer sous une autre clé ou dans un autre événement.

      Parameters

      • key: string

        La clé du callback à supprimer.

      Returns MayBe<T>

      Le callback supprimé, si il éxiste.

      const ancien = event.remove('monHandler');
      event.add('nouveauHandler', ancien);