New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@smt-lib/observer

Package Overview
Dependencies
Maintainers
2
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@smt-lib/observer

swan-observer是一个订阅发布器。

  • 1.0.0
  • npm
  • Socket score

Version published
Weekly downloads
3
decreased by-40%
Maintainers
2
Weekly downloads
 
Created
Source

解释: 在小程序开发中,总会遇到事件监听派发的需求,swan-observer是一个订阅发布器。

swan-observer

小程序种使用三方npm包方法,见npm使用说明

npm install @baidu/swan-observer



const eventsEmitter = new EventsEmitter();

实例化之后,获得eventsEmitter对象。

eventsEmitter对象方法 fireMessage

说明:派发事件

参数类型必填默认值说明
messageObject发布的内容和监听的类型
optionsObject{}发布器配置信息,包括once

message参数

参数类型必填默认值说明
typestring监听类型

options参数

参数类型必填默认值说明
onceboolean回调是否只执行一次

eventsEmitter对象方法 onMessage

说明:监听事件

参数类型必填默认值说明
typestringArray
handlerFunction回调函数
optionsObject{}监听器配置信息,包括once和listenPreviousEvent

options参数

参数类型必填默认值说明
onceboolean回调是否只执行一次
listenPreviousEventboolean是否先发布后监听

eventsEmitter对象方法 delHandler

说明:删除事件监听

参数类型必填默认值说明
typestring监听类型,如果传入*则清除所有监听
handlerFunction希望删除的回调函数

EventsEmitter静态方法 merge

说明:融合多条事件流成为一条

参数类型必填默认值说明
eventsEmitterObjecteventsEmitter对象
示例
// 订阅发布常规用法
const eventsEmitter = new EventsEmitter();
let a = 0;
eventsEmitter.onMessage('addA', message => {
    a += message.num;
});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

console.log(a); // 5



// 监听多个type变化
const eventsEmitter = new EventsEmitter();
let a = 0;
eventsEmitter.onMessage(['addA', 'addB'], message => {
    a += message.num;
});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.fireMessage({
    type: 'addB',
    num: 5
});

console.log(a); // 10



// 监听类型为*时,执行任何fireMessage都会调用回调
const eventsEmitter = new EventsEmitter();
let a = 0;
let b = 0;
eventsEmitter.onMessage('addA', message => {
    a += message.num;
});

eventsEmitter.onMessage('*', message => {
    b += message.num;
});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

console.log(b); // 5



// 只执行一次回调
const eventsEmitter = new EventsEmitter();
let a = 0;
eventsEmitter.onMessage('addA', message => {
    a += message.num;
}, {once: true});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

console.log(a); // 5



// 先发布后订阅
const eventsEmitter = new EventsEmitter();
let a = 0;
eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.onMessage('addA', message => {
    a += message.num;
}, {
    listenPreviousEvent: true
});

console.log(a); // 10



// 删除某个type下的具体回调
const eventsEmitter = new EventsEmitter();
let a = 0;
let b = 0;
const addA = message => {
    a += message.num;
};
const addB = message => {
    b += message.num;
};

eventsEmitter.onMessage('addA', addA);
eventsEmitter.onMessage('addA', addB);

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.delHandler('addA', addA);

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

console.log(a); // 5
console.log(b); // 10


// 删除所有回调
const eventsEmitter = new EventsEmitter();
let a = 0;
const addA = message => {
    a += message.num;
};

eventsEmitter.onMessage('addA', addA);
eventsEmitter.onMessage('addB', addA);

eventsEmitter.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitter.delHandler('*');

eventsEmitter.fireMessage({
    type: 'addB',
    num: 5
});

console.log(a); // 5


// 融合多条事件流成为一条
const eventsEmitterA = new EventsEmitter();
const eventsEmitterB = new EventsEmitter();
const mergedEventsEmitter = EventsEmitter.merge(eventsEmitterA, eventsEmitterB);
let a = 0;

mergedEventsEmitter.onMessage(['addA', 'addB'], message => {
    a += message.num;
});

eventsEmitterA.fireMessage({
    type: 'addA',
    num: 5
});

eventsEmitterB.fireMessage({
    type: 'addB',
    num: 5
});

console.log(a); // 10

FAQs

Package last updated on 23 Dec 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc