• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

event-emitter-target: 发布订阅事件机制模块 用 Typescript 函数式编程写成 添加事 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

event-emitter-target

开源软件地址:

https://gitee.com/masx200/event-emitter-target

开源软件介绍:

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的事件的侦听器数组的副本。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap