Score
0
Watch 4 Star 5 Fork 0

masx200 / event-emitter-targetTypeScriptGPL-3.0

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
发布订阅事件机制模块 用 Typescript 函数式编程写成 添加事件监听器有自动去重功能 事件触发时,监听器函数异步执行 spread retract

Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

event-emitter-target

发布订阅事件机制模块

用 Typescript 函数式编程写成

添加事件监听器有自动去重功能

事件触发时,监听器函数异步执行

安装模块

yarn add https://github.com/masx200/event-emitter-target.git

导入模块

import EventEmitterTargetClass from "@masx200/event-emitter-target";

示例

创建 EventEmitterTarget对象,有两种方法

1.当做函数使用

let emitter = EventEmitterTargetClass();

2.当做类使用

class myemitter extends EventEmitterTargetClass {}

let emitter = new myemitter();

以下示例显示了EventEmitterTarget具有单个侦听器的简单实例。

EventEmitterTarget.on()方法用于注册侦听器,

而该EventEmitterTarget.emit()方法用于触发事件。

emitter.on("event", () => {
    console.log("an event occurred!");
});
emitter.emit("event");

API

https://github.com/masx200/event-emitter-target/blob/master/dist/index.d.ts

interface EventEmitterTargetConstructor {
    new (): EventEmitterTarget;
    (): EventEmitterTarget;
}
type EventEmitterTarget = ReturnType<typeof createEventEmitterTarget>;
type EVENTNAME = string | symbol;
type EVENTLISTENER = (event?: any) => void;

declare function createEventEmitterTarget(): {
    [Symbol.toPrimitive]: typeof toprimitive;
    [Symbol.toStringTag]: string;
    [Symbol.iterator]: () => IterableIterator<[EVENTNAME, EVENTLISTENER[]]>;
    entries: () => IterableIterator<[EVENTNAME, EVENTLISTENER[]]>;

    listenerCount: (name: EVENTNAME) => number;
    clear: (name: EVENTNAME) => void;
    removeAllListeners: (name: EVENTNAME) => void;
    on: (name: EVENTNAME, callback: EVENTLISTENER) => void;
    addListener: (name: EVENTNAME, callback: EVENTLISTENER) => void;
    off: (name: EVENTNAME, callback: EVENTLISTENER) => void;
    removeListener: (name: EVENTNAME, callback: EVENTLISTENER) => void;
    once: (name: EVENTNAME, callback: EVENTLISTENER) => void;
    emit: (name: EVENTNAME, event?: any) => void;
    dispatch: (name: EVENTNAME, event?: any) => void;
    eventNames: () => EVENTNAME[];
    listeners: (name: EVENTNAME) => EVENTLISTENER[];
};
declare function toprimitive(): string;

EventEmitterTargetClass()

1.可当做函数使用

2.可当做类使用

返回一个EventEmitterTarget对象

emitter[Symbol.toStringTag]

此属性值为 "EventEmitterTarget"

可以用来判断对象类型。

emitter[Symbol.iterator]()

返回所有的事件名和监听器的数组迭代器

emitter.entries()

别名 emitter[Symbol.iterator]()

emitter.listenerCount(eventName)

返回侦听名为eventName的事件的侦听器数

emitter.clear(eventName)

别名 emitter.removeAllListeners(eventName)

emitter.removeAllListeners(eventName)

删除指定eventName的所有侦听器。

删除代码中其他地方添加的侦听器是一种不好的做法,尤其是在EventEmitterTarget实例由其他组件或模块创建时。

emitter.on(eventName, listener)

将监听器函数添加到名为eventName的事件的监听器数组的末尾。检查是否已添加侦听器。通过eventNamelistener的相同组合进行的多次调用不会导致多次添加和调用该监听器。

emitter.addListener(eventName, listener)

别名 emitter.on(eventName, listener)

emitter.off(eventName, listener)

别名 emitter.removeListener(eventName, listener).

emitter.removeListener(eventName, listener)

从名为eventName的事件的侦听器数组中删除指定的侦听器。

removeListener()将最多从侦听器数组中删除一个侦听器实例。如果已将任何单个侦听器多次添加到指定eventName的侦听器数组,则removeListener()无需多次调用即可删除每个实例。

emitter.once(eventName, listener)

为名为eventName的事件添加一次性侦听器函数。下次eventName触发时,将删除此侦听器,然后调用它。

emitter.emit(eventName, args)

以注册事件eventName的顺序异步调用为名为的事件注册的每个侦听器,并将提供的参数传递给每个侦听器。

emitter.dispatch(eventName, args)

别名 emitter.emit(eventName, args)

emitter.eventNames()

返回一个数组,该数组列出发射器已为其注册侦听器的事件。数组中的值将是stringsymbol

emitter.listeners(eventName)

返回名为eventName的事件的侦听器数组的副本。

Comments ( 0 )

Sign in for post a comment

TypeScript
1
https://gitee.com/masx200/event-emitter-target.git
git@gitee.com:masx200/event-emitter-target.git
masx200
event-emitter-target
event-emitter-target
master

Help Search