async-branch

0.1.1 • Public • Published

async-branch

Build Status

Wrap async library to describe your flow through branches

Installation

npm install async-branch

Usage

Import the library

var asyncbranch = require('async-branch')

Create branches and execute

var createUser = new asyncbranch.branch('create user')
    .do(insertToDb)
    .do(sendEmailToConfirmRegistration)
    .do(emitUserCreateEvent)
    
var loginUser = new asyncbranch.branch('load user')
    .do(emitUserLoginEvent)
 
var loginOrRegistration = new asyncbranch.branch('login or registration')
    .do(loadUserFromEmail)
    .branch(function(model, next) {
        next(null, model ? loginUser : createUser)
    })
    .execute('example@example.com', function(err, model) {
        // if the user is on db loginUser branch is executed
        // else the createUser branch is executed
    })

Or use to map an array

var data = [
  { key1: 'pippo' },
  { key1: 'pluto' },
  { key1: 'paperina' },
  { key1: 'paperino' },
]
 
var tooLongFunction = function tooLongFunction(item, next) {
  item.type = 'tooLong'
  next(null, item)
}
var tooShortFunction = function tooLongFunction(item, next) {
  item.type = 'tooShort'
  next(null, item)
}
 
var tooLongBranch = new asyncbranch.branch('tooLongBranch')
  .map(tooLongFunction)
var tooShortBranch = new asyncbranch.branch('tooShortBranch')
  .map(tooShortFunction)
 
function branchFunction(item, callback) {
  callback(null, (item.key1.length > 6) ? tooLongBranch : tooShortBranch)
}
 
new asyncbranch.branch('branch name')
  .itemBranch(branchFunction)
  .execute(data, function(err, data) {
    // the first two item of data have type property set to tooShort
    // the other items of data have type property set to tooLong
    console.log(data)
  })

See the test folder for more explainations.

Readme

Keywords

none

Package Sidebar

Install

npm i async-branch

Weekly Downloads

1

Version

0.1.1

License

MIT

Last publish

Collaborators

  • allevo