EventHandler
A simple class for allowing c# style events in js:
{ thissomeEvent = this; this { thissomeEvent; }} var someInstance = ;someInstancesomeEvent;someInstance;// Would alert "hello"
Installation
IF you are using Node then you should be able to just do:
var EventHandler = require("event-handler");
If you want to use it in the browser without a module loader then grab the event.js
file in dist/browser
it will self register the EventJs
global for you to access the event handler.
var EventHandler = EventJs.EventHandler;
Either way you will need to new up an instance of it to use it.
var someEvent = new EventHandler(theSenderGoesHere);
Usage
So as shown in the above example you can easily subscribe to events with it, subscribe as many listeners as you want to them.
var { ... };var { ... };var { ... }; var someEvent = someSender; someEvent;someEvent;someEvent; someEvent;
You can also add predicates to only subscribe based upon arguments:
var { ... };var { return argslength <= 2; } var someEvent = someSender; someEvent; someEvent; // subscription wont get triggeredsomeEvent; // predicate returns true and would trigger subscription
Finally if you want to unsubscribe just do:
var { ... };var someEvent = someSender; someEvent; // subscribe itsomeEvent; // unsubscribe it
or if you are living dangerously and end up doing a lot of inline functions you can capture the return unsubscriber token and use that for unsubscribing:
var someSubscription = ;var someEvent = someSender; var unsubscriber = someEvent; // subscribe and get unsubscriber; // unsubscribe it
Differences with C#
In c# the events tend to put the sender first, however as in most cases you don't care about the sender and JS has optional arguments it made more sense for the args to be the first parameter and then the sender be the last, this makes it more succinct when writing event handlers which do not care about the sender.
Before version 0.0.6 it used to be the other way around, but from this point on it will be as detailed above.