andthen
Async function composition with parameter fixing abiliy.
$ npm install andthen
See Also: comp
Usage
Functions almost same as other function composition libraries, except that it lets you bind a property of a produced value to following function.
Simplest usage could look like:
andThen = require('andThen')
andThen(getContents, 'posts', getPosts, 'images', getImages)(function(error, contents){
contents.posts
contents.images
})
function getContents(callback){
callback(undefined, { posts: [3, 1, 4], images: [11, 7, 3])
}
function getPosts(ids, callback){
callback(undefined, ['Foo', 'bar', 'qux'])
}
function getImages(ids, callback){
callback(undefined, ['11.jpg', '7.jpg', '3.jpg'])
}
More detailed example with full functional programming armory:
andThen = require('andThen')
map = require('map')
partial = require('new-partial')
getPosts = partial(map, getPost)
getPhotos = partial(map, getPhoto)
getProfile = andThen(getUser, 'posts', getPosts, 'photos', getPhotos)
getProfile(1, function(error, profile){
profile.posts[0].title, profile.posts[2].content
profile.photos[0].path, profile.photos[1].path
})
function getUser(id, callback){
callback(undefined, {
name : 'Smith',
posts : [1, 3, 5],
photos : [2, 7, 11]
})
}
function getPost(id, callback){
callback(undefined, {
title: 'Post #' + id,
content: 'Content #' + id
})
}
function getPhoto(id, callback){
callback(undefined, {
path: '/photos' + id + '.jpg
})
}