Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

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

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