1.0.1 • Published 5 years ago

syh-observer v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

Observer 公共事件观察器

安装

npm install syh-observer --save

说明

用于订阅和触发公共事件, 使用全局字符串名称表示事件ID,使事件订阅者与发布者无直接依赖,达到模块间弱耦合的目的。

依赖模块

示例

该模块支持 ES6/CMD/AMD规范,也可以在html文件中通过script标签引入进行使用;下面以cmd规范为例

公共事件触发与定阅
    // Map.js;
    var observer = require('observer');
    // 触发了一个名称为'map:init'的事件;并传递 {time: new Date()}作为监听事件处理函数的参数;
    observer.trigger('map:init', {time: new Date()});
// A模块
  var observer = require('observer');
  // 使用 observer.on方法进行消息订阅
  observer.on('map:init', function(time){
    alert('地图已初始化')
  });

  ///..............

  //撤消指定事件的订阅
  observer.off('map:init')
// B模块
  var observer = require('observer');
  //past 即使B模块在'map:init'公共事件触发之后加载,下面的事件处理函数也能被调用
  //调用时time事件参数为最后一次触发时的参数
  observer.past('map:init', function(time){
    alert('地图已初始化')
  });
// C模块
  var observer = require('observer');
  // 使用observer.once,只监听一次消息,之后的消息不再监听
  observer.once('map:init', function(time){
    alert('地图已初始化')
  });
define(function(require, exports, modules) {
  var observer = require('observer');
  //清空observer中每个事件的最后状态
  observer.clearAll();
});
define(function(require, exports, modules) {
  var observer = require('observer');
  //清空observer中指定事件的最后状态
  observer.clearOther(['event-a','event-b']);
});

调试功能

  1. 设置 seajs.debug 为 true
  2. 在JS调试器控制台中运行 printObserver() 可显示当前已注册的事件,及其所在代码行
  3. 在JS调试器控制台中运行 window.ObserverDebugOut = '*' , 可显示此后所有事件触发的调试信息
  4. 使用 window.ObserverDebugOut = 'event-a'window.ObserverDebugOut = ['event-a','event-b','event-a'] 可显示此后指定事件触发的调试信息