简介
在前端开发中,事件监听是必不可少的一个功能。而 Node.js 中的 EventEmitter 已经成为了一个比较常用的事件监听器,它可以让我们在 Node.js 中实现事件驱动的开发思路。
而在 EventEmitter 之上又有了一款 npm 包,它就是本文要介绍的 weighted-emitter,它提供了一个带权重的事件监听器,可以让我们更加精确的控制事件的触发顺序。
安装
首先我们需要使用 npm 进行安装:
npm install weighted-emitter
之后,在我们要使用 weighted-emitter 的文件中引入它:
const WeightedEmitter = require('weighted-emitter');
使用
在了解了 weighted-emitter 的基本用法之前,让我们先来看一下它的 API:
new WeightedEmitter()
新建一个 weighted emitter:
const emitter = new WeightedEmitter();
emitter.on(event, listener, weight)
添加一个监听器,weight 即权重,取值范围为 0 到 100,默认值为 50:
emitter.on('test', () => { console.log('test 1'); }, 60); emitter.on('test', () => { console.log('test 2'); }, 40);
emitter.emit(event, ...args)
触发一个事件:
emitter.emit('test');
emitter.removeListener(event, listener)
移除一个监听器:
const listener = () => { console.log('test'); }; emitter.on('test', listener); emitter.removeListener('test', listener);
emitter.removeAllListeners(event)
移除所有监听器:
emitter.removeAllListeners('test');
示例代码
下面是一个简单的示例:
-- -------------------- ---- ------- ----- --------------- - ---------------------------- ----- ------- - --- ------------------ ------------------ -- -- - ----------------- ---- -- ---- ------------------ -- -- - ----------------- ---- -- ---- ---------------------
上面的代码会依次输出:
test 1 test 2
因为我们设置了 test 1 的权重为 60,test 2 的权重为 40,所以 test 1 先被触发。
总结
weighted-emitter 是一个带权重的事件监听器,可以让我们更加精确的控制事件的触发顺序。它有着简单易用的 API,而且非常轻量,是我们在前端开发中的一款非常有用的 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005552681e8991b448d25be