https://github.com/cshum/parallels
Utilities for handling parallel callbacks
https://github.com/cshum/parallels
Last synced: 30 days ago
JSON representation
Utilities for handling parallel callbacks
- Host: GitHub
- URL: https://github.com/cshum/parallels
- Owner: cshum
- License: mit
- Created: 2016-02-15T09:31:58.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-06-25T10:23:18.000Z (almost 9 years ago)
- Last Synced: 2025-03-18T07:18:17.520Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 9.77 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# parallels
Utilities for handling parallel callbacks.
[](https://travis-ci.org/cshum/parallels)
```bash
npm install parallels
```#### `var p = parallels()`
Create a parallel instance.
#### `var cb = p.push()`
Returns a callback handling function that aggregates result in sequence.
#### `p.all(done)`
Aggregates callback values into an array. Returns error if error occurred in any of callbacks.
```js
var parallels = require('parallels')function asyncFn (timeout, val, cb) {
setTimeout(cb, timeout, null, val)
}
function asyncFnErr (timeout, err, cb) {
setTimeout(cb, timeout, err)
}var p = parallels()
asyncFn(20, 1, p.push())
asyncFn(10, 2, p.push())
asyncFn(30, 3, p.push())
p.all(function (err, val) {
console.log(val) // [1, 2, 3]
})var p2 = parallels()
asyncFn(5, 1, p2.push())
asyncFnErr(20, new Error('boom'), p2.push())
asyncFn(10, 3, p2.push())
p2.all(function (err, val) {
console.log(err.message) // 'boom'
})
```
#### `p.any(done)`Callback when any value resolved. Returns error if all not fulfilled.
```js
var p = parallels()
asyncFn(20, 1, p.push())
asyncFn(10, 2, p.push())
asyncFnErr(10, new Error('boom'), p.push())
p.any(function (err, val) {
console.log(val) // 2
})var p2 = parallels()
asyncFnErr(20, new Error('abcd'), p2.push())
asyncFnErr(10, new Error('boom'), p2.push())
p2.any(function (err, val) {
console.log(err.message) // 'boom'
})
```#### `p.some(count, done)`
Aggregates callback values by the number of `count` resolved. Returns error if not fulfilled by `count`.
```js
var p = parallels()
asyncFn(20, 1, p.push())
asyncFn(10, 2, p.push())
asyncFnErr(10, new Error('boom'), p.push())
p.some(2, function (err, val) {
console.log(val) // [2, 1]
})var p2 = parallels()
asyncFn(10, 1, p2.push())
asyncFnErr(10, new Error('boom'), p2.push())
p2.some(2, function (err, val) {
console.log(err.message) // 'boom'
})
```#### `p.race(done)`
Returns value or error of first callback being invoked.
```js
var p = parallels()
asyncFn(10, 1, p.push())
asyncFnErr(20, new Error('boom'), p.push())
p.race(function (err, val) {
console.log(val) // 1
})var p2 = parallels()
asyncFn(20, 1, p2.push())
asyncFnErr(10, new Error('boom'), p2.push())
p2.some(2, function (err, val) {
console.log(err.message) // 'boom'
})
```## License
MIT