瀏覽代碼

feat(Listenable): Implements Listenable class

dev1
hristoterezov 8 年之前
父節點
當前提交
3b39be8a59
共有 1 個檔案被更改,包括 39 行新增0 行删除
  1. 39
    0
      modules/util/Listenable.js

+ 39
- 0
modules/util/Listenable.js 查看文件

@@ -0,0 +1,39 @@
1
+import EventEmitter from "events";
2
+
3
+/**
4
+ * The class implements basic event operations - add/remove listener.
5
+ * NOTE: The purpose of the class is to be extended in order to add
6
+ * this functionality to other classes.
7
+ */
8
+export default class Listenable {
9
+    /**
10
+     * Creates new instance.
11
+     * @param {EventEmitter} eventEmitter
12
+     * @constructor
13
+     */
14
+    constructor(eventEmitter = new EventEmitter()) {
15
+        this.eventEmitter = eventEmitter;
16
+        // aliases for addListener/removeListener
17
+        this.addEventListener = this.on = this.addListener;
18
+        this.removeEventListener = this.off = this.removeListener;
19
+    }
20
+
21
+    /**
22
+     * Adds new listener.
23
+     * @param {String} eventName the name of the event
24
+     * @param {Function} listener the listener.
25
+     */
26
+    addListener (eventName, listener) {
27
+        this.eventEmitter.addListener(eventName, listener);
28
+    }
29
+
30
+    /**
31
+     * Removes listener.
32
+     * @param {String} eventName the name of the event that triggers the
33
+     * listener
34
+     * @param {Function} listener the listener.
35
+     */
36
+    removeListener (eventName, listener) {
37
+        this.eventEmitter.removeListener(eventName, listener);
38
+    }
39
+}

Loading…
取消
儲存