powerful-mitt

4.0.22 • Public • Published

PowerfulMitt

Execute event prioritily, nestly, fail when previous listenser return true.At last, you can unresiger specific command by key.

Feature

  • [x] Executing by prioriy
  • [x] Registering and emit nested command
  • [x] Failing when previous listenser return true
  • [x] Unregistering by key

...

If you can imagine any other feature, please submit a issue

Get Start

Install

npm install --save powerful-mitt

Basic Using

import {createEmitter, Emitter} from "powerful-mitt";
const emitter = createEmitter()
const FOO_COMMAND = createCommand<[string, string], void>('foo')
emitter.on(FOO_COMMAND, (obj1: string, obj2: string) => {
  console.log(obj1, obj2);
})
emitter.emit(FOO_COMMAND, 'a', 'b')

Expect result

a b

Powerful Using

import {createEmitter, Emitter} from "powerful-mitt";
const emitter = createEmitter({
                key: true,
                priority: true,
                failEmit: true,
                commandNest: true
            })

const FOO_COMMAND = createCommand<[string], void>('foo')
const NODE_COMMAND = createCommand<[string], void>('node')
const NODE_FOO_COMMAND = createNestCommand(NODE_COMMAND, FOO_COMMAND)
let result: string[]
const a = () => {
  result.push('a')
}
const b = () => {
  result.push('b')
  return true
}
const c = () => {
  result.push('c')
}
emitter.on(NODE_FOO_COMMAND, a, {
  priority: 1,
  key: 'alpha'
})
emitter.on(NODE_FOO_COMMAND, b, {
  priority: 2,
  key: 'beta'
})
emitter.on(NODE_FOO_COMMAND, c, {
  priority: 3,
  key: 'alpha'
})

No listeners executed

emitter.emit(NODE_COMMAND, '');
emitter.emit(FOO_COMMAND, '');

Expect result

result === [] // deepEqual

All listeners executed, but listener a

Because listener b executed ahead, and it return true.

emitter.emit(createNestCommand(NODE_COMMAND, ALL_COMMAND), '');

Expect result

result === ['c', 'b'] // deepEqual

After unresigster, some listeners executed

Only listener b execute.

emitter.off(NODE_FOO_COMMAND, undefined, {
  key: 'alpha'
})
emitter.emit(createNestCommand(NODE_COMMAND, ALL_COMMAND), '');

Expect result

result === ['c', 'b', 'b'] // deepEqual

License

MIT License © Meogic

Dependents (0)

Package Sidebar

Install

npm i powerful-mitt

Weekly Downloads

0

Version

4.0.22

License

MIT

Unpacked Size

71.4 kB

Total Files

17

Last publish

Collaborators

  • wingnpm