Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

serially

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

serially - npm Package Compare versions

Comparing version
0.1.0
to
1.0.0
+54
performance.js
var time = require("measure-time");
var serially = require("./");
time('basic', function (end) {
serially()
.then(quux)
.then(corge)
.then(span)
.done(end);
});
time('with parameters and aliases', function (end) {
serially()
.then(foo, ['hello', 'world', '!'])
.then('bar-alias', bar, [1, 2, 3])
.then(qux, [4, 5, 6])
.done(end);
});
function foo (pa, ra, ms, callback) {
setImmediate(function () {
callback(undefined, pa + '\n' + ra + '\n' + ms);
});
}
function bar (pa, ra, ms, callback) {
setImmediate(function () {
callback(undefined, pa + ra + ms);
});
}
function qux (pa, ra, ms, callback) {
setImmediate(function () {
callback(undefined, pa * ra * ms);
});
}
function quux (callback) {
setImmediate(function () {
callback();
});
}
function corge (callback) {
setImmediate(function () {
callback();
});
}
function span (callback) {
setImmediate(function () {
callback();
});
}
+37
-27

@@ -5,32 +5,14 @@ var loop = require("serial-loop");

function serially (fn, params) {
function serially () {
var fns = [];
call.add = add;
call.then = add;
call.done = call;
var self = {
then: then,
done: call,
end: call
};
return call;
return self;
function call (callback) {
var results = [];
loop(fns.length, each, function (error) {
callback(error, results);
});
function each (done, i) {
var params = fns[i].params ? fns[i].params.slice() : [];
params.push(function callback (error) {
if (error) return done(error);
results[fns[i].alias] = Array.prototype.slice.call(arguments, 1);
done();
});
fns[i].fn.apply(undefined, params);
}
}
function add (alias, fn, params) {
function then (alias, fn, params) {
if (typeof alias != 'string') {

@@ -48,4 +30,32 @@ params = fn;

return call;
return self;
}
function call (callback) {
var results = {};
var len = fns.length;
(function next (i, error) {
if (error) return callback(error, results);
if (i >= len) return callback(undefined, results);
var params = fns[i].params;
if (!params) {
params = [];
} else {
params = params.slice();
}
params.push(function (error) {
if (error) return next(i + 1, error);
results[fns[i].alias] = Array.prototype.slice.call(arguments, 1);
next(i+1);
});
fns[i].fn.apply(undefined, params);
}(0));
}
}
{
"name": "serially",
"version": "0.1.0",
"version": "1.0.0",
"description": "Compose async functions into one function that runs all serially",

@@ -10,3 +10,4 @@ "main": "index.js",

"devDependencies": {
"prova": "*"
"prova": "*",
"measure-time": "0.0.1"
},

@@ -13,0 +14,0 @@ "keywords": [

+13
-12

@@ -5,2 +5,4 @@ ## serially

See also: [parallelly](http://github.com/azer/parallelly)
## Install

@@ -19,15 +21,14 @@

var all = serially()
.add(foo, ['a', 'b', 'c'])
.add(bar, [1, 2, 3])
.add('qux alias', qux, [4, 5, 6])
serially()
.then(foo, ['a', 'b', 'c'])
.then(bar, [1, 2, 3])
.then('qux alias', qux, [4, 5, 6])
.done(function (error, results) {
if (error) throw error
console.log('done')
console.log(results)
// => { foo: [...], bar: [...], qux alias: [...] }
})
all(function (error, results) {
if (error) throw error
console.log('done')
console.log(results)
// => { foo: [...], bar: [...], qux alias: [...] }
})
function foo (pa, ra, ms, callback) {}

@@ -34,0 +35,0 @@ function bar (pa, ra, ms, callback) {}