/fluent

Define fluent interfaces for asynchronous operations

Primary LanguageJavaScript

Fluent

Fluent allows you to create simple interfaces for pipelining asynchronous actions.

var Fluent = require("fluent");
var Class = require("class-42");

var MyFluent = Class.extend({
  initialize: function() {
    Fluent.initialize(this);
  },
  
  doFoo: Fluent.async(function(a, b, c, callback) {
    process.nextTick(function() {
      console.log(a, b, c);
      callback();
    });
  }),
  
  doBar: Fluent.wrap(function(a, b) {
    console.log(a + b);
  })
});

var o = new MyFluent();
o.doFoo(1, 2, 3).doBar(4, 5);
// prints:
//   1  2  3
//   9

Fluent provides two decorators, async and wrap, which queue the wrapped method when called. Fluent.async provides a callback to determine when the operation is complete, whereas Fluent.wrap assumes it's finished after the return.