Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    hostesspublic

    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
    */

    Keywords

    install

    npm i hostess

    Downloadsweekly downloads

    19

    version

    0.0.2

    license

    MIT

    last publish

    collaborators

    • avatar
    • avatar