返回介绍

saber-emitter v0.4.0

发布于 2023-10-15 20:10:06 字数 2950 浏览 0 评论 0 收藏 0

一个适用于移动端的事件发射器。

Usage

通过edp引入模块:

edp import saber-emitter

简单使用示例:

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

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

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

API

Emitter

new Emitter

创建Emitter实例。

var emitter = new Emitter();

Emitter.mixin( obj )

通过mixinEmitter混入目标对象。

var obj = {};
Emitter.mixin( obj );

obj.emit( 'foo' );

Emitter#on( event, listener )

挂载事件。

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

Emitter#once( event, listener )

挂载只执行一次的事件。

emitter.once( 'say', listenerFn );

Emitter#off( event, listener )

注销事件与监听器。

  • 任何参数都不传将注销当前实例的所有事件
  • 只传入event将注销该事件下挂载的所有监听器
  • 传入eventlistener将只注销该监听器
emitter.off();
emitter.off( 'say' );
emitter.off( 'say', listenerFn );

Emitter#emit( event, args… )

触发事件。

emitter.emit( 'say' );
emitter.emit( 'say', 'hello' );

Emitter#listeners( event )

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

var listeners = emitter.listeners( 'say' );

Emitter#setMaxListeners( number )

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

emitter.setMaxListeners( 8 );

AspectEmitter

提供了 AOP 支持的事件发射器。

它的使用方式与 Emitter 相同,只是在 emit 增加了对 :before:after 事件的支持。

注:在事件 onoffonce 时,带 :before/:after 的事件与普通事件无区分,均需手工管理。

var AspectEmitter = require('saber-emitter/aspect');

var emitter = new AspectEmitter();

// 绑定 before、after 事件
emitter.on('foo', doSomething);
emitter.on('foo:before', doSomething);
emitter.on('foo:after', doSomething);

emitter.emit('foo');
// => 按 foo:before, foo, foo:after 顺序触发

emitter.emit('foo:before');
// => 单独触发 foo:before 事件

// 手工解绑事件
emitter.off('foo');
emitter.off('foo:before');
emitter.off('foo:after');

Browser Support

已测试通过的浏览器:

  • iOS Safari: 5.0, 5.1, 6.0, 6.1, 7.0
  • Android Browser: 2.2, 2.3.3, 4.1
  • IE Mobile: 10

,

Saber

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文