Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mafintosh/atomic-batcher
A simple batching function that allows you to atomically batch a series of operations.
https://github.com/mafintosh/atomic-batcher
Last synced: 13 days ago
JSON representation
A simple batching function that allows you to atomically batch a series of operations.
- Host: GitHub
- URL: https://github.com/mafintosh/atomic-batcher
- Owner: mafintosh
- License: mit
- Created: 2016-07-11T14:07:40.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-08-08T07:28:52.000Z (over 7 years ago)
- Last Synced: 2024-04-14T06:52:31.244Z (7 months ago)
- Language: JavaScript
- Size: 4.88 KB
- Stars: 32
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# atomic-batcher
A simple batching function that allows you to atomically batch a series of operations. If you are looking for the same thing with a stream interface checkout [byte-stream](https://github.com/maxogden/byte-stream).
```
npm install atomic-batcher
```[![build status](http://img.shields.io/travis/mafintosh/atomic-batcher.svg?style=flat)](http://travis-ci.org/mafintosh/atomic-batcher)
## Usage
``` js
var batcher = require('atomic-batcher')
var db = require('level')('some.db')var batch = batcher(function work (ops, cb) {
// only one batch will happen at the time
console.log('Batching:', ops, '\n')
db.batch(ops, cb)
})batch({type: 'put', key: 'hello', value: 'world-1'})
batch({type: 'put', key: 'hello', value: 'world-2'})
batch({type: 'put', key: 'hello', value: 'world-3'})
batch({type: 'put', key: 'hi', value: 'hello'}, function () {
console.log('Printing latest values:\n')
db.get('hello', console.log) // returns world-3
db.get('hi', console.log) // returns hello
})
```Running the above example will print
```
Batching: [ { type: 'put', key: 'hello', value: 'world-1' } ]Batching: [ { type: 'put', key: 'hello', value: 'world-2' },
{ type: 'put', key: 'hello', value: 'world-3' },
{ type: 'put', key: 'hi', value: 'hello' } ]Printing latest values:
null 'world-3'
null 'hello'
```## API
#### `var batch = batcher(worker)`
Create a new batching function. `worker` should be a function that accepts a batch and a callback, `(batch, cb)`.
Only one batch is guaranteed to be run at the time.The `batch` function accepts a value or an array of values and a callback, `batch(value(s), cb)`. The callback is called when the batch containing the values have been run.
## License
MIT