Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/krasimir/chain

Sequencing function calls in JavaScript
https://github.com/krasimir/chain

Last synced: 3 days ago
JSON representation

Sequencing function calls in JavaScript

Awesome Lists containing this project

README

        

Chain.js
=====

Sequencing function calls in JavaScript.

## Examples

### #1 (simple)

Chain()(
function(res, chain) {
console.log("A"); chain.next(10);
},
function(res, chain) {
console.log("B", res); chain.next(res+1);
},
function(res, chain) {
console.log("C", res); chain.next();
}
);

Output:

A
B 10
C 11

### #2 (passing function as array)

var A = function(str, callback) {
console.log("Hello " + str + "!");
callback();
}
var B = function(str1, str2, callback) {
console.log("How " + str1 + " " + str2 + "?");
callback();
}
Chain()(
[A, "world"],
[B, "are", "you"],
function(res, chain) {
chain.next();
}
);

Output:

Hello world!
How are you?

### #3 (#1 + #2 + listening for chain ending)

var chainFinished = function(res, chain) {
console.log("End", res);
}
var customFunc = function(arg1, arg2, callback) {
console.log("customFunc", arg1, arg2);
callback("result(customFunc)");
}

Chain()("done", chainFinished)(
function(res, chain) {
console.log("A", res);
chain.next("result(A)");
},
[customFunc, "Hello", "World"],
function(res, chain) {
console.log("B", res);
chain.next("result(B)");
}
);

Output:

A null
customFunc Hello World
B result(customFunc)
End result(B)

### #4 (error reporting)

var operationA = function(res, chain) {
chain.error({message: "Error message from operation A"}).next();
}
var operationB = function(res, chain) {
chain.error({message: "Error message from operation B"}).next();
}
Chain()("done", function(res, chain) {
if(errors = chain.error()) {
console.log("Yes, there are some errors", errors);
}
})(
operationA,
operationB
);

Output:

Yes, there are some errors
[Object, Object]