4.0.4 • Published 2 years ago
eify v4.0.4
eify
Eify is an EventEmitter that supports "synchronous, asynchronous, parallel and serial" triggering, and has good support for typescript.
Usage
// Example: Inherit AbstractEventEmitter
export class MyClass extends AbstractEventEmitter<{
change1: (value: number) => void
change2: (value: string) => void
}> {
trigger() {
this.emit("change1", 1); // ✅
this.emit("change1", "1"); // ❌
this.emit("change2", "2"); // ✅
this.emit("change2", 2); // ❌
}
}
const myInstance = new MyClass();
myInstance.emit('change1', 1); // ❌
// Example: EventEmitter
const emitter = new EventEmitter<{
change1: (value: number) => void
change2: (value: string) => void
}>();
emitter.emit("change1", 1); // ✅
emitter.emit("change1", "1"); // ❌
emitter.emit("change2", "2"); // ✅
emitter.emit("change2", 2); // ❌
// Example: EventEmitter as a class field
export class MyClass {
private emitter = emitter = new EventEmitter<{
change1: (value: number) => void
change2: (value: string) => void
}>();
on:MyClass["emitter"]["on"] = (...args)=>
this.emitter.on(...args);
off:MyClass["emitter"]["off"] = (...args)=>
this.emitter.off(...args);
trigger() {
this.emit("change1", 1); // ✅
this.emit("change1", "1"); // ❌
this.emit("change2", "2"); // ✅
this.emit("change2", 2); // ❌
}
}
const myInstance = new MyClass();
myInstance.emit('change1', 1); // ❌
// Example: Async emit
const emitter = new EventEmitter<{
change: (value: number) => Promise<void>
}>();
emitter.on("change",async (value)=>{
console.log(value);
});
// Wait for the asynchronous execution of all handlers to complete
await emitter.emitAsync("change", 1);
// Wait for the asynchronous execution of all handlers to complete
// All handlers will execute in parallel
await emitter.emitParallel("change", 1);
// Example: Proxy the document
const emitter = new DOMEventEmitter<{
[key in keyof DocumentEventMap]: (event: DocumentEventMap[key]) => void
}>(document);
emitter.on("wheel", event => event.deltaY);
emitter.on("wheel", event => event.deltaY);
emitter.removeListener("wheel");
4.0.4
2 years ago
3.2.2
2 years ago
3.2.1
2 years ago
3.1.2
2 years ago
3.2.0
2 years ago
3.2.3
2 years ago
4.0.1
2 years ago
4.0.0
2 years ago
4.0.3
2 years ago
4.0.2
2 years ago
3.1.1
4 years ago
3.0.2
4 years ago
3.0.1
4 years ago
3.0.0
4 years ago
2.0.5
5 years ago
2.0.4
5 years ago
2.0.3
5 years ago
2.0.2
6 years ago
2.0.1
6 years ago
2.0.0
6 years ago
1.0.3
6 years ago
1.0.2
6 years ago
1.0.1
6 years ago
1.0.0
6 years ago
0.0.0
6 years ago