快递q
快速, 在内存工作队列中 .
基准(100万项任务):
- 即时设置: 812ms
- 快克:854ms (中文(简体) )
- aync.queue: 1298ms (英语)
- 新Async.queue:1249ms (英语)
在12.16.1节点上通过专用服务器获得.
如果您需要零头系列函数呼叫, 请检查 快速序列。用于零管理平行 函数调用, 检查出 快速平行。 。 。 .
安装
npm i fastq --save
用法( 回调 API)
'use strict'
const queue = require('fastq')(worker, 1)
queue.push(42, function (err, result) {
if (err) { throw err }
console.log('the result is', result)
})
function worker (arg, cb) {
cb(null, arg * 2)
}
用法(保证API)
const queue = require('fastq').promise(worker, 1)
async function worker (arg) {
return arg * 2
}
async function run () {
const result = await queue.push(42)
console.log('the result is', result)
}
run()
设置"这个"
'use strict'
const that = { hello: 'world' }
const queue = require('fastq')(that, worker, 1)
queue.push(42, function (err, result) {
if (err) { throw err }
console.log(this)
console.log('the result is', result)
})
function worker (arg, cb) {
console.log(this)
cb(null, arg * 2)
}
使用类型脚本( 回调 API)
'use strict'
import * as fastq from "fastq";
import type { queue, done } from "fastq";
type Task = {
id: number
}
const q: queue<Task> = fastq(worker, 1)
q.push({ id: 42})
function worker (arg: Task, cb: done) {
console.log(arg.id)
cb(null)
}
使用类型脚本( 保证 API)
'use strict'
import * as fastq from "fastq";
import type { queueAsPromised } from "fastq";
type Task = {
id: number
}
const q: queueAsPromised<Task> = fastq.promise(asyncWorker, 1)
q.push({ id: 42}).catch((err) => console.error(err))
async function asyncWorker (arg: Task): Promise<void> {
// No need for a try-catch block, fastq handles errors automatically
console.log(arg.id)
}
API 密码
fastqueue()queue#push()queue#unshift()queue#pause()queue#resume()queue#idle()queue#length()queue#getQueue()queue#kill()queue#killAndDrain()queue#error()queue#concurrencyqueue#drainqueue#emptyqueue#saturatedfastqueue.promise()
fastqueue([那],工人,货币)
创建新队列.
参数 :
that,可选上下文worker函数.worker,工人的功能, 它被称为与that作为this, (中文(简体) ), 如果有的话.concurrency, 可在 平行.
队列. push( 任务, 已完成)
在队列末尾添加任务 . done(err, result) 将被调用
当任务被处理时.
队列. unshort( 任务已完成)
在队列开头添加任务 . done(err, result) 将被调用
当任务被处理时.
队列. 暂停 ()
暂停任务处理 。 目前的工作任务不是 停下来.
队列. resume ()
恢复任务处理.
队列. idle ()
回返 false 如果有任务正在处理或等待处理.
true 否则.
队列. 长 ()
返回等待处理的任务数量(在队列中).
队列。 get Quue ()
返回所有要处理的任务( 在队列中) 。 在没有任务时返回空数组
队列. kill ()
删除待处理的所有任务,并重设 drain 改为空
函数.
队列。 kill AndDrain ()
与 kill 不过 drain 函数在重置为空之前将被调用.
队列. error( 处理器)
设置全局错误处理器 . handler(err, task) 将被调用
每次任务完成后, err 如果任务出错, 将不会无效 .
队列. 货币
返回可执行的并行任务数量的财产 平行。 运行时可以改变.
队列。 已暂停
返回的属性( 只读) true 当队列处于停顿状态时.
队列. drain
上次调用时的函数 来自队列的项目已经由工人处理. 运行时可以改变.
队列。 空
上次调用时的函数 从队列中列出的项目已分配给工人. 运行时可以改变.
队列。饱和
当队列击中货币时调用的函数 限制. 运行时可以改变.
fastqueue.promise([那],工人(arg),货币)
创建一个新队列 Promise pi. 它也提供了所有的方法
和返回对象的属性 fastqueue 修改后
push 财务报告和审定财务报表 unshift 方法。 。 .
节点v10+需要使用被打通的版本.
参数 :
that,可选上下文worker函数.worker,工人的功能, 它被称为与that作为this, (中文(简体) ), 如果有的话。 它必须返回aPromise。 。 。 .concurrency, 可在 平行.
队列. push( 任务) QQ 答应
在队列末尾添加任务 。 回来的 Promise 将实现( 已拒绝)
当任务成功完成时( 未成功) .
这一承诺可能会被忽略,因为它不会导致 'unhandledRejection'。 。 。 .
队列. unshort(任务) QQ 答应
在队列开头添加任务 。 回来的 Promise 将实现( 已拒绝)
当任务成功完成时( 未成功) .
这一承诺可能会被忽略,因为它不会导致 'unhandledRejection'。 。 。 .
队列. drained () QQ 答应
等待排队排出. 回来的 Promise 将在队列中的所有任务由工人处理后解决.
这一承诺可能会被忽略,因为它不会导致 'unhandledRejection'。 。 。 .
许可证
公务员制度委员会