Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/visionmedia/batch
Simple async batch with concurrency control and progress reporting
https://github.com/visionmedia/batch
Last synced: about 20 hours ago
JSON representation
Simple async batch with concurrency control and progress reporting
- Host: GitHub
- URL: https://github.com/visionmedia/batch
- Owner: visionmedia
- License: mit
- Created: 2012-02-13T00:47:37.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T22:16:04.000Z (4 months ago)
- Last Synced: 2024-12-13T17:08:39.794Z (26 days ago)
- Language: JavaScript
- Homepage:
- Size: 106 KB
- Stars: 319
- Watchers: 7
- Forks: 52
- Open Issues: 3
-
Metadata Files:
- Readme: Readme.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
README
# batch
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Build Status][ci-image]][ci-url]
[![Test Coverage][coveralls-image]][coveralls-url]Simple async batch with concurrency control and progress reporting.
## Installation
This is a [Node.js](https://nodejs.org/en/) module available through the
[npm registry](https://www.npmjs.com/). Installation is done using the
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):```bash
$ npm install batch
```## Usage
```js
var Batch = require('batch')
```### `new Batch([options], [...fns])`
Create a new Batch, optionally passing an `options` object and/or a list of
functions (`fns`) to queue.The `options` object may contain the following keys:
- `concurrency`: set the default `concurrency` for the Batch, which can be changed
using `batch.concurrency(n)`.
- `throws`: set the default `throws` for the Batch, which can be changed using
`batch.throws(throws)`.#### `batch.concurrency(n)`
Set concurrency to `n`.
#### `batch.end([cb])`
Execute all queued functions in parallel, executing `cb(err, results)`.
#### `batch.push(fn)`
Queue a function.
#### `batch.throws(throws)`
Set whether Batch will or will not throw up.
#### `progress` event
Contains the "job" index, response value, duration information, and completion data.
```
{ index: 1,
value: 'bar',
pending: 2,
total: 3,
complete: 2,
percent: 66,
start: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT),
end: Thu Oct 04 2012 12:25:53 GMT-0700 (PDT),
duration: 0 }
```## Example
```js
var Batch = require('batch')
, batch = new Batch;batch.concurrency(4);
ids.forEach(function(id){
batch.push(function(done){
User.get(id, done);
});
});batch.on('progress', function(e){
});
batch.end(function(err, users){
});
```## License
[MIT](LICENSE)
[ci-image]: https://badgen.net/github/checks/visionmedia/batch/master?label=ci
[ci-url]: https://github.com/visionmedia/batch/actions/workflows/ci.yml
[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/batch/master
[coveralls-url]: https://coveralls.io/r/visionmedia/batch?branch=master
[downloads-image]: https://badgen.net/npm/dm/batch
[downloads-url]: https://npmjs.org/package/batch
[npm-image]: https://badgen.net/npm/v/batch
[npm-url]: https://npmjs.org/package/batch
[travis-image]: https://badgen.net/travis/visionmedia/batch/master