1.0.1 • Published 8 years ago
@luffysan/easy-emitter v1.0.1
EasyEmitter
Introduction
Emitter is like a third party eyes that can help you execute code at perfect timming than using waterfall technics.
Specification
- You need NodeJS 8+ or more
- It's a ES6 module, no babelJS
Usage
=> Register an event
let emitter = require('easy-emitter');
emitter.register('name-event', function () {
console.log('I do this when name-event is called');
});
=> Unregister an event
let emitter = require('easy-emitter');
emitter.unregister('name-event');
=> Unregister an event with callback
let emitter = require('easy-emitter');
emitter.unregister('name-event', function () {
console.log('Done after name-event has been removed')
});
=> Active our event
let emitter = require('easy-emitter');
emitter.emit('name-event');
=> Examples of basic usage
let emitter = require('easy-emitter');
let gulp = require('gulp');
gulp.task('build', (done) => {
emitter.emit('before-build'); // we activate an event before build
// output : After-build event is working works
// TODO do your things
// Take big amount of time or not
// ...
emitter.emit('after-build'); // We activate an event after build
// => output : After-build event is working works
done();
});
gulp.task('default', () => {
emitter.register('after-build', ['build'], function () => {
console.log('After-build event is working works');
});
});
=> Examples of unregister case
let gulp = require('gulp');
let emitter = require('easy-emitter');
gulp.task('default', (done) => {
emitter.register('after-register', function () => {
console.log('event 1');
});
emitter.register('after-register', function () => {
console.log('event 2');
});
emitter.emit('after-build');
// => ouput: event 1
// => event 2
emitter.unregister('after-build');
// => unregister the two events
emitter.emit('after-build');
// => nothing
done();
});
Changelog
1.0.0
- Register a function to an event
- Unregister all functions of an event
- Emit a function
1.0.1
- Fix README : some nonsense vocabulary
Reasons
I got some timing issues with webpack + gulp. Since webpack destroy and replace file asynchronously and slowly. I reload most of the time to soon. So to make a clean development with using EventEmitter or if/switch staement on 'end event'. I decide to create a postal pattern like we can find in Mobile GUI to pass information between pages.