2.0.0 • Published 9 years ago

saber-emitter v2.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

saber-emitter

Bower version NPM version Build Status License EFE Mobile Team

一个适用于移动端的事件发射器,兼容 node 环境。

Installation

通过 edp 引入模块:

$ edp import saber-emitter

或者在 node 环境下 使用 npm 引入模块:

$ npm install saber-emitter --save

Usage

require(['saber-emitter'], function(Emitter) {
    var emitter = new Emitter();

    emitter.on('greeting', function(name) {
        console.log('Hello, ' + name + '!');
    });

    emitter.emit('greeting', 'Firede');
});

API

创建 Emitter 实例

  • return {Emitter}
var Emitter = require('saber-emitter');
var emitter = new Emitter();

Methods

mixin(obj)

通过 mixinEmitter 混入目标对象

  • obj {Object} 目标对象
  • return {Object} 混入 Emitter 后的目标对象
var obj = {};
Emitter.mixin(obj);

obj.emit('foo');

Classes

on(event, listener)

挂载事件

  • event {string} 事件名
  • listener {Function} 监听器
  • return {Emitter}
function listenerFn(name) {
    console.log('Hello ' + name);
}
emitter.on('say', listenerFn);

once(event, listener)

挂载只执行一次的事件

  • event {string} 事件名
  • listener {Function} 监听器
  • return {Emitter}
emitter.once('say', listenerFn);

off([event, listener])

注销事件与监听器

  • event {string=} 事件名
  • listener {Function=} 监听器
  • return {Emitter}
// `不传参数` 将注销当前实例的所有事件
emitter.off();

// 只传入 `event` 将注销该事件下挂载的所有监听器
emitter.off('say');

// 传入 `event` 与 `listener` 将只注销该监听器
emitter.off('say', listenerFn);

emit(event, ...args)

触发事件

  • event {string} 事件名
  • args {...*} 传递给监听器的参数,可以有多个
  • return {Emitter}
emitter.emit('say');
emitter.emit('say', 'hello');
emitter.emit('say', 'hello', 'world');

listeners(event)

返回指定事件的监听器列表

  • event {string} 事件名
  • return {Array} 监听器列表
var listeners = emitter.listeners('say');

setMaxListeners(number)

设置每个事件下,监听器的最大个数。为 0 时不限制,默认值是 10

  • number {number} 监听器个数
  • return {Emitter}
emitter.setMaxListeners(8);