0.0.2 • Published 9 months ago

we-signal v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

we-signal


这是一个普通的事件信号发射器...

安装
yarn add we-signal
//or
npm install we-signal --save
使用
// simple use
import { Emitter } from 'we-signal';
const emitter = new Emitter();
const handler = (signal) => {
  console.log(`Said ${signal.data.msg}`);
  //Said Hi!
};
/** add `SaySomething` listener */
emitter.on('SaySomething', handler);
/** emit signal */
emitter.emit('SaySomething', { msg: 'Hi!' });
/** remove listener */
emitter.off('SaySomething', handler);
// handler's context
import { Emitter } from 'we-signal';
const emitter = new Emitter();
const ctx = { id: 5 };
function handler(signal) {
  console.log(`${signal.data} ${this.id}`);
  // ID is 5
}
emitter.on('SignalType', handler, ctx);
emitter.emit('SignalType', 'ID is');
// receiving times
import { Emitter } from 'we-signal';
const emitter = new Emitter();
emitter.on('SignalType', (signal) => {
  console.log('Received=>', signal.data);
  // Received=>1
  // Received=>2
  // Received=>3
});
emitter.on(
  'SignalType',
  (signal) => {
    console.log('Received=>', signal.data);
    // Received=>1
    // Received=>2
  },
  null,
  2
);
emitter.once('SignalType', (signal) => {
  console.log('Received=>', signal.data);
  // Received=>1
});
emitter.emit('SignalType', 1);
emitter.emit('SignalType', 2);
emitter.emit('SignalType', 3);
// level event
import { Emitter, Signal } from 'we-signal';
const parent = new Emitter();
const current = new Emitter();
const child_1 = new Emitter();
const child_2 = new Emitter();
/** set parent */
current.parent = parent;
/** add children */
current.addChild(child_1, child_2);
/** add listener */
parent.on('SignalType', (signal) => {
  console.log(signal.data);
  // parent_exact
  // parent_downward
});
const handler = (signal) => {
  console.log(signal.data);
  // parent_exact
  // parent_downward
  // current_upward
  // current_whole
  // child_1_upward
};
parent.on('SignalType', handler, null, -1, Signal.Features.upward);
current.on('SignalType', (signal) => {
  console.log(signal.data);
  // current_exact
  // current_downward
  // current_upward
  // current_whole
});
current.on(
  'SignalType',
  (signal) => {
    console.log(signal.data);
    // current_exact
    // current_downward
    // current_upward
    // current_whole
    // child_1_upward
  },
  null,
  -1,
  Signal.Features.upward
);
current.on(
  'SignalType',
  (signal) => {
    console.log(signal.data);
    // parent_downward
    // current_exact
    // current_downward
    // current_upward
    // current_whole
  },
  null,
  -1,
  Signal.Features.downward
);
current.on(
  'SignalType',
  (signal) => {
    console.log(signal.data);
    // parent_downward
    // current_exact
    // current_downward
    // current_upward
    // current_whole
    // child_1_upward
  },
  null,
  -1,
  Signal.Features.whole
);
child_1.on('SignalType', (signal) => {
  console.log(signal.data);
  // child_1_exact
  // child_1_upward
});
child_1.on(
  'SignalType',
  (signal) => {
    console.log(signal.data);
    // parent_downward
    // current_downward
    // current_whole
    // child_1_exact
    // child_1_upward
  },
  null,
  -1,
  Signal.Features.downward
);
child_1.on(
  'SignalType',
  (signal) => {
    console.log(signal.data);
    // parent_downward
    // current_downward
    // current_whole
    // child_1_exact
    // child_1_upward
  },
  null,
  -1,
  Signal.Features.whole
);
parent.emit('SignalType', 'parent_exact');
parent.emit('SignalType', 'parent_downward', Signal.Features.downward);
current.emit('SignalType', 'current_exact');
current.emit('SignalType', 'current_downward', Signal.Features.downward);
current.emit('SignalType', 'current_upward', Signal.Features.upward);
current.emit('SignalType', 'current_whole', Signal.Features.whole);
child_1.emit('SignalType', 'child_1_exact');
child_1.emit('SignalType', 'child_1_upward', Signal.Features.upward);
/** remove current listener */
parent.off('SignalType', handler, null, Signal.Features.upward);
/** remove `SignalType` listener */
current.off('SignalType');
/** remove all listener */
child_1.off();