fastparallel
Advanced tools
Comparing version 1.6.1 to 1.7.0
{ | ||
"name": "fastparallel", | ||
"version": "1.6.1", | ||
"version": "1.7.0", | ||
"description": "Zero-overhead asynchronous parallel/each/map function call", | ||
@@ -30,3 +30,3 @@ "main": "parallel.js", | ||
"devDependencies": { | ||
"async": "^0.9.0", | ||
"async": "^1.4.2", | ||
"fastbench": "^1.0.0", | ||
@@ -36,8 +36,9 @@ "faucet": "0.0.1", | ||
"pre-commit": "^1.0.6", | ||
"standard": "^3.0.0", | ||
"tape": "^3.5.0" | ||
"standard": "^4.2.0", | ||
"tape": "^4.2.0" | ||
}, | ||
"dependencies": { | ||
"reusify": "^1.0.0", | ||
"xtend": "^4.0.0" | ||
} | ||
} |
@@ -0,2 +1,5 @@ | ||
'use strict' | ||
var xtend = require('xtend') | ||
var reusify = require('reusify') | ||
var defaults = { | ||
@@ -11,33 +14,17 @@ released: nop, | ||
var released = options.released | ||
var Holder = options.results ? ResultsHolder : NoResultsHolder | ||
var head = new Holder(release) | ||
var tail = head | ||
var queue = reusify(options.results ? ResultsHolder : NoResultsHolder) | ||
return parallel | ||
function next () { | ||
var holder = head | ||
if (holder.next) { | ||
head = holder.next | ||
} else { | ||
head = new Holder(release) | ||
tail = head | ||
} | ||
holder.next = null | ||
return holder | ||
} | ||
function parallel (that, toCall, arg, done) { | ||
var i | ||
var holder = next() | ||
var holder = queue.get() | ||
done = done || nop | ||
if (toCall.length === 0) { | ||
done.call(that) | ||
released(head) | ||
released(holder) | ||
} else { | ||
holder._callback = done | ||
holder._callThat = that | ||
holder._release = release | ||
if (typeof toCall === 'function') { | ||
@@ -62,12 +49,12 @@ holder._count = arg.length | ||
function release (holder) { | ||
tail.next = holder | ||
tail = holder | ||
released() | ||
queue.release(holder) | ||
released(holder) | ||
} | ||
} | ||
function NoResultsHolder (_release) { | ||
function NoResultsHolder () { | ||
this._count = -1 | ||
this._callback = nop | ||
this._callThat = null | ||
this._release = null | ||
this.next = null | ||
@@ -83,3 +70,3 @@ | ||
that._callThat = null | ||
_release(that) | ||
that._release(that) | ||
} | ||
@@ -95,2 +82,3 @@ } | ||
this._callThat = null | ||
this._release = null | ||
this.next = null | ||
@@ -110,3 +98,3 @@ | ||
i = 0 | ||
_release(that) | ||
that._release(that) | ||
} | ||
@@ -113,0 +101,0 @@ } |
@@ -27,3 +27,3 @@ var test = require('tape') | ||
function released () { | ||
t.pass() | ||
t.pass('release') | ||
} | ||
@@ -30,0 +30,0 @@ }) |
15881
2
422
+ Addedreusify@^1.0.0
+ Addedreusify@1.0.4(transitive)