Skip to content
/ serial Public

A simple module for working with serial callbacks, works on node and browser

Notifications You must be signed in to change notification settings

chemzqm/serial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bitdeli Badge Build Status Coverage Status

Serial

Serial provide a simple way for management of serial async call, so you can remember the API just by a glance.

If you think async and promise is somehow complicated, consider using chemzqm/parallel and chemzqm/serial to make your life easier.

Installation

Via npm:

npm install node-serial

Via component:

component install chemzqm/serial

Features

  • Unified error handling.
  • Timeout support for individual callback.
  • Immediate finished when error occur.
  • Get previous callback result through ctx.res.
  • Save and get properties on ctx object.
  • No magic on finished callback, just one function.

Test on node and browser

You must have component installed for browser usage and mocha, mocha-phantomjs installed for testing.

$ npm install -g component mocha mocha-phantomjs
$ git clone [email protected]:chemzqm/serial.git
$ cd serial && npm install
$ make
#run test on server side
$ make test
#run test on phantomjs
$ make phantomjs

Example

function square(n, done) {
  setTimeout(function(){
    done(null, n * n);
  }, 100);
}
var Serial = require('serial'); //The name is 'node-serial' in node environment
var serial = new Serial();
serial.timeout(1000);
[1, 2, 3].forEach(function(){
  serial.add(function(done, ctx){
    square( 1 + (ctx.res || 0), function (err ,res) {
      done(err, res);
    })
  })
})
serial.done(function (err, ctx) {
  if (err) throw err;
  // ctx.res => 25
});

API

Serial()

Init new Serial instance.

.timeout(Number)

Set the timeout to number ms, default is 10s.

Note this timeout if for individual callback function.

.add(Function)

Add Function to serial, the first argument is a callback function, it should be called with error as first argument and result you need as secound argument. the secound argument is a ctx obejct, it's res attribute contains the result of the previous function call, you can save any object on ctx as you need.

.done(Function)

The callback function is called with error (null or undefined if not exist) and the result array when all the request get finished (or timeout reached).

Note, this function should only be called once.

License

MIT

About

A simple module for working with serial callbacks, works on node and browser

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •