Dirt simple solution for waiting on async event listeners
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
.travis.yml
README.md
index.js
package.json
test.js

README.md

ESync is a dirt simple module for waiting on a bunch of async tasks. Build Status

var esync = require('esync');

var wait = esync();

wait(function(cb) {
    cb();
});
wait(function(cb) {
    setTimeout(cb, 1000);
});
wait(function(cb) {
    var err = new Error("Oops!");
    cb(err);
});

wait.end(function(err) {
    /* ... */
});

Its main purpose is as a utility for EventEmitters that need to offer listeners a way to delay execution.

var esync = require('esync');
var EventEmitter = require('events');

var emitter = new EventEmitter();

emitter.on('foo', function(arg1, arg2, wait) { wait(function(cb) {
    setTimeout(cb, 1000);
}); });

var wait = esync();
emitter.emit('foo', 3, 5, wait);
wait.end(function(err) {
    /* ... */
});

The beaty of this is that it's optional; listeners can simply ignore the parameter. Additionally, it follows the ‘error first’ callback parameter convention seen in Node.js.