hostess

0.0.2 • Public • Published

Hostess is a nice girl that will run your async code based on dependencies.

Basic Usage

Calling hostess() returns a method that you can call repeatedly. You pass in a name, an optional list of dependencies, and a callback.

The callback will not be called until it's dependcies have been met.

var hostess = require('hostess')
  , host = hostess()
 
host('first', function() {
  console.log('first');
});
 
host('second', ['first'], function() {
  console.log('first');
});

Asynchronous

To use hostess asyncronously, just ask nicely for a callback, and she won't run any dependencies until you call it.

var hostess = require('hostess')
  , host = hostess()
 
host('first', function(next) {
  setTimeout(function() {
    console.log('first');
    next();
  }, 10);
});
 
host('second', ['first'], function() {
  console.log('first');
});

Event Handlers

There are two special names you can give to hostess, 'error', and 'done', which will act as event handlers and not dependencies.

var hostess = require('hostess')
  , host = hostess()
 
// if you don't set and error handler, then
// errors will be uncaught exceptions.
host('error', function(err) {
  console.log('you got an error: ' + err.message);
});
 
host('bad', function() {
  throw new Error('oh noes');
});
 
host('bad', function(next) {
  next(new Error('oh noes'));
});
var hostess = require('hostess')
  , host = hostess()
 
host('no deps', function() {
  // done will be fired after this
  setTimeout(next, 100);
});
 
host('cookies', ['milk'], function() {
  // done will be fired after this
});
 
host('milk', function(next) {
  // won't fire done
  setTimeout(next, 100);
});
 
host('done', function() {
  // will be called when there is nothing in the queue
});

Debugging

var hostess = require('hostess')
  , host = hostess()
 
host('set', 'debug', true);
host('set', 'timeout', 1000); // defaults to 500ms
 
host('dep', function(next) {
  setTimeout(next, 500);
});
 
host('buggy', [ 'dep' ], function(next) {
  // forgot to call next();
});
 
/* Outputs:
calling dep
calling buggy
buggy timed out
*/

Readme

Keywords

Package Sidebar

Install

npm i hostess

Weekly Downloads

8

Version

0.0.2

License

MIT

Last publish

Collaborators

  • regality
  • grobot