root / HServer / 00.Server / 00.Program / node_modules / ultron / README.md
이력 | 보기 | 이력해설 | 다운로드 (3.92 KB)
1 | 39 | HKM | # Ultron |
---|---|---|---|
2 | |||
3 | [](http://unshift.io)[](http://browsenpm.org/package/ultron)[](https://travis-ci.org/unshiftio/ultron)[](https://david-dm.org/unshiftio/ultron)[](https://coveralls.io/r/unshiftio/ultron?branch=master)[](http://webchat.freenode.net/?channels=unshift) |
||
4 | |||
5 | Ultron is a high-intelligence robot. It gathers intelligence so it can start |
||
6 | improving upon his rudimentary design. It will learn your event emitting |
||
7 | patterns and find ways to exterminate them. Allowing you to remove only the |
||
8 | event emitters that **you** assigned and not the ones that your users or |
||
9 | developers assigned. This can prevent race conditions, memory leaks and even file |
||
10 | descriptor leaks from ever happening as you won't remove clean up processes. |
||
11 | |||
12 | ## Installation |
||
13 | |||
14 | The module is designed to be used in browsers using browserify and in Node.js. |
||
15 | You can install the module through the public npm registry by running the |
||
16 | following command in CLI: |
||
17 | |||
18 | ``` |
||
19 | npm install --save ultron |
||
20 | ``` |
||
21 | |||
22 | ## Usage |
||
23 | |||
24 | In all examples we assume that you've required the library as following: |
||
25 | |||
26 | ```js |
||
27 | 'use strict'; |
||
28 | |||
29 | var Ultron = require('ultron'); |
||
30 | ``` |
||
31 | |||
32 | Now that we've required the library we can construct our first `Ultron` instance. |
||
33 | The constructor requires one argument which should be the `EventEmitter` |
||
34 | instance that we need to operate upon. This can be the `EventEmitter` module |
||
35 | that ships with Node.js or `EventEmitter3` or anything else as long as it |
||
36 | follow the same API and internal structure as these 2. So with that in mind we |
||
37 | can create the instance: |
||
38 | |||
39 | ```js |
||
40 | // |
||
41 | // For the sake of this example we're going to construct an empty EventEmitter |
||
42 | // |
||
43 | var EventEmitter = require('events').EventEmitter; // or require('eventmitter3'); |
||
44 | var events = new EventEmitter(); |
||
45 | |||
46 | var ultron = new Ultron(events); |
||
47 | ``` |
||
48 | |||
49 | You can now use the following API's from the Ultron instance: |
||
50 | |||
51 | ### Ultron.on |
||
52 | |||
53 | Register a new event listener for the given event. It follows the exact same API |
||
54 | as `EventEmitter.on` but it will return itself instead of returning the |
||
55 | EventEmitter instance. If you are using EventEmitter3 it also supports the |
||
56 | context param: |
||
57 | |||
58 | ```js |
||
59 | ultron.on('event-name', handler, { custom: 'function context' }); |
||
60 | ``` |
||
61 | |||
62 | Just like you would expect, it can also be chained together. |
||
63 | |||
64 | ```js |
||
65 | ultron |
||
66 | .on('event-name', handler) |
||
67 | .on('another event', handler); |
||
68 | ``` |
||
69 | |||
70 | ### Ultron.once |
||
71 | |||
72 | Exactly the same as the [Ultron.on](#ultronon) but it only allows the execution |
||
73 | once. |
||
74 | |||
75 | Just like you would expect, it can also be chained together. |
||
76 | |||
77 | ```js |
||
78 | ultron |
||
79 | .once('event-name', handler, { custom: 'this value' }) |
||
80 | .once('another event', handler); |
||
81 | ``` |
||
82 | |||
83 | ### Ultron.remove |
||
84 | |||
85 | This is where all the magic happens and the safe removal starts. This function |
||
86 | accepts different argument styles: |
||
87 | |||
88 | - No arguments, assume that all events need to be removed so it will work as |
||
89 | `removeAllListeners()` API. |
||
90 | - 1 argument, when it's a string it will be split on ` ` and `,` to create a |
||
91 | list of events that need to be cleared. |
||
92 | - Multiple arguments, we assume that they are all names of events that need to |
||
93 | be cleared. |
||
94 | |||
95 | ```js |
||
96 | ultron.remove('foo, bar baz'); // Removes foo, bar and baz. |
||
97 | ultron.remove('foo', 'bar', 'baz'); // Removes foo, bar and baz. |
||
98 | ultron.remove(); // Removes everything. |
||
99 | ``` |
||
100 | |||
101 | If you just want to remove a single event listener using a function reference |
||
102 | you can still use the EventEmitter's `removeListener(event, fn)` API: |
||
103 | |||
104 | ```js |
||
105 | function foo() {} |
||
106 | |||
107 | ultron.on('foo', foo); |
||
108 | events.removeListener('foo', foo); |
||
109 | ``` |
||
110 | |||
111 | ## License |
||
112 | |||
113 | MIT |