Skip to content

Commit 492b7d9

Browse files
Dirk LüthDirk Lüth
authored andcommitted
Merge branch 'release/2.0.4'
2 parents 3abd0d5 + e1fe2ef commit 492b7d9

3 files changed

Lines changed: 363 additions & 119 deletions

File tree

index.js

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,28 @@ function mapListener(listener) {
8080
}
8181

8282
/**
83-
* Apply an event + optional details to a listener
83+
* Apply an event + optional details to all listener
8484
*
85-
* @param {Function} callback
85+
* @param {Listener[]} listener
8686
* @param {Event} event
8787
* @param {Object[]=} details
8888
*
8989
* @ignore
9090
*/
91-
function applyEvent(callback, event, details) {
92-
callback.call(this, event, ...details);
91+
async function applyEvent(listener, event, details) {
92+
let i = 0, item;
93+
94+
for(; (item = listener[i]); i++) {
95+
if(item.remaining && !(item.remaining -= 1)) {
96+
this.off(item.identifier, item.callback);
97+
}
98+
99+
await Promise.resolve(item.callback.call(this, event, ...details));
100+
101+
if(event.isCanceled) {
102+
break;
103+
}
104+
}
93105
}
94106

95107
/**
@@ -203,17 +215,7 @@ class Emitter {
203215
let listener = retrieveListener.call(this, name);
204216

205217
if(listener.length) {
206-
let event = new Event(name, this);
207-
208-
listener.some((listener) => {
209-
applyEvent.call(this, listener.callback, event, details);
210-
211-
if(listener.remaining && !(listener.remaining -= 1)) {
212-
this.off(listener.identifier, listener.callback);
213-
}
214-
215-
return event.isCanceled;
216-
});
218+
applyEvent.call(this, listener, new Event(name, this), details);
217219
}
218220

219221
return this;
@@ -394,4 +396,15 @@ class Emitter {
394396
}
395397
}
396398

397-
module.exports = initialize(Emitter);
399+
module.exports = initialize(Emitter);
400+
401+
/*
402+
(new Emitter())
403+
.on([ 'test1', 'test1' ], function(event) {
404+
console.log(event.name);
405+
406+
return new Promise((resolve) => { resolve(); });
407+
})
408+
.emit('test1')
409+
.emit('test1');
410+
*/

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flexee",
3-
"version": "2.0.3",
3+
"version": "2.0.4",
44
"description": "Flexible event emitter for Node.js supporting RegExp-based event subscription and global broadcast listeners",
55
"main": "index.js",
66
"author": {
@@ -37,5 +37,6 @@
3737
"mocha": "^3.4.1",
3838
"nyc": "^10.3.2",
3939
"sinon": "^2.2.0"
40-
}
40+
},
41+
"engines" : { "node" : ">=7.10.1" }
4142
}

0 commit comments

Comments
 (0)