leap
v0.1.3
Published
leap is a simple flow-control tool for coffee-script
Downloads
12
Readme
leap
Simple flow-control tool for coffee-script. It makes async coding much easier.
Examples
leap ->
#first async function
, ->
#second async function
, ->
# all functions are executed in parallel
leap ->
# do something async
@next results
.then (res) ->
# do something async with results
async_function res, @
.and (res) ->
# do something else with it in parallel
another_async_function res, @
.then ([first_res, second_res]) ->
# use data from async results of previous step
leap ->
async_function ["Kinks", "Beatles", "United States of America"], @
.then.map (rockband) ->
async_function "The #{rockband}", @
.then (bands) ->
bands.should.be.deep.equal [
"The Kinks"
"The Beatles"
"The United States of America"
]
.rescue (err) ->
#handle all async errors in one place
Usage
install via npm
npm install leap
require in your code
leap = require 'leap'
API
leap(functions...)
Run one ore more functions as a first step of sequence. All functions are called with callback as first parameter. Also, callback is a context of all functions.
leap (callback) -> fs.readFile 'file', callback
is the same as
leap -> fs.readFile 'file', @
.then(functions...)
Add one o more functions to be executed after previous step. All functions are called with results of previous step as first parameter, callback as second parameter. Also, callback is a context.
leap -> fs.readFile 'file', @ .then (content) -> db.create content, @ , (content) -> some_api_request.find content, @ .then ([db_entry, api_response]) -> #
.and(functions...)
Add functions to current step. All functions get results from previous step as first parameter. Also, callback is a context and second parameter.
leap -> model.countLikes user, @ .and -> model.countViews user, @ .then ([likes, views]) -> addToResponse likes, views do @ .and ([likes, views]) -> saveToCache user, likes, views, @
.rescue(handler)
All errors stops execution of a flow and processed by handler. Error is passed by first argument
leap -> fs.readFile 'test1', @ , -> fs.readFile 'test2', @ .rescue (err) -> console.log err
callbacks: @ and @next
Will be documented soon. see tests.
leap.map(iterator)
.and.map(iterator)
.then.map(iterator)
Will be documented soon. see tests.
leap.reduce(iterator)
.and.reduce(iterator)
.then.reduce(iterator)
Will be documented soon. see tests.
leap.filter(iterator)
.and.filter(iterator)
.then.filter(iterator)
Will be documented soon. see tests.
leap.reject(iterator)
.and.reject(iterator)
.then.reject(iterator)
Will be documented soon. see tests.
Inspired by
Testing
$ npm test
License
MIT