Handler<T, U> (type)

Every time attach*, waitFor or pipe is invoked a new Handler<T, U> is attached to the Evt<T>.

Handlers can be listed using the evt.getHandler() method.

type Handler<T,U> = {

    //Method for detaching the handler from the Evt, returns false if 
    //if invoked when the handler is no longer attached.
    detach(): boolean;

    //The promise returned by the attach*() and waitFor() method.
    promise: Promise<U>;


    /* Properties that depends on the method used to attach the handler */

    //true if the handler was attached using a method containing "prepend"
    //in it's name. Example: evt.$attachOncePrepend(...)
    prepend: boolean;

    //... if the method contained "extract"
    extract: boolean;

    //... if the method contained "once"
    once: boolean;

    //if the method was waitFor()
    async: boolean;



    /* Properties passed as argument to the method used to attach the handler */

    //Default: ()=> true, a filter that matches all events.
    op: Operator<T,U>; 

    //Default: undefined
    ctx?: Ctx; 

    //Default: undefined.
    timeout?: number;

    //Undefined only when the handler was attached using evt.waitFor()
    callback?: (transformedData: U)=> void;

};

Glossary relative to handers:

  • An event is said to be matched by a handler if posting it causes the callback to be invoked. In practice this is the case when the handler's operator returns true or [ value, ].

  • An event is said to be handled by a handler if the event data is matched or if posting it causes the handler and/or other potential handlers to be detached. In practice this is the case when the handler's operator returns "DETACH" or {DETACH: Ctx}. It is possible to test if a given event data is handled by at least one of the handlers attached to an Evt<T> by using the evt.isHandled(data) method.

Last updated