fastq
Fast, in memory work queue. fastq
is API compatible with
async.queue
Benchmarks (1 million tasks):
- setImmediate: 812ms
- fastq: 854ms
- async.queue: 1298ms
- neoAsync.queue: 1249ms
Obtained on node 12.16.1, on a dedicated server.
If you need zero-overhead series function call, check out fastseries. For zero-overhead parallel function call, check out fastparallel.
Install
npm i fastq --save
Usage
'use strict'
var queue = require('fastq')(worker, 1)
.push(42, function (err, result) {
queueif (err) { throw err }
console.log('the result is', result)
})
function worker (arg, cb) {
cb(null, 42 * 2)
}
Setting this
'use strict'
var that = { hello: 'world' }
var queue = require('fastq')(that, worker, 1)
.push(42, function (err, result) {
queueif (err) { throw err }
console.log(this)
console.log('the result is', result)
})
function worker (arg, cb) {
console.log(this)
cb(null, 42 * 2)
}
API
fastqueue()
queue#push()
queue#unshift()
queue#pause()
queue#resume()
queue#idle()
queue#length()
queue#getQueue()
queue#kill()
queue#killAndDrain()
queue#concurrency
queue#drain
queue#empty
queue#saturated
### fastqueue([that], worker, concurrency) |
---|
### queue.push(task, done) |
Add a task at the end of the queue.
done(err, result) will be called when the task was
processed. |
Add a task at the beginning of the queue.
done(err, result)
will be called when the task was
processed.
### queue.pause() |
---|
### queue.resume() |
Resume the processing of tasks. |
Returns false
if there are tasks being processed or
waiting to be processed. true
otherwise.
### queue.length() |
---|
### queue.getQueue() |
Returns all the tasks be processed (in the queue). Returns empty array when there are no tasks |
Removes all tasks waiting to be processed, and reset
drain
to an empty function.
### queue.killAndDrain() |
---|
### queue.concurrency |
Property that returns the number of concurrent tasks that could be executed in parallel. It can be altered at runtime. |
Function that will be called when the last item from the queue has been processed by a worker. It can be altered at runtime.
### queue.empty |
Function that will be called when the last item from the queue has been assigned to a worker. It can be altered at runtime. |
Function that will be called when the queue hits the concurrency limit. It can be altered at runtime.
License
ISC