<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[fastq队列工具 - 编程技术参考——模具行业从业者必备知识手册]]></title><description><![CDATA[<p dir="auto">&lt;h2&gt;fastq&lt;/h2&gt;</p>
<p dir="auto">&lt;p&gt;![ci][ci-url]&lt;/p&gt;<br />
&lt;p&gt;[![npm version][npm-badge&rsqb;&rsqb;[npm-url]&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Fast, in memory work queue.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Benchmarks (1 million tasks):&lt;/p&gt;</p>
<p dir="auto">&lt;ul&gt;<br />
&lt;li&gt;setImmediate: 812ms&lt;/li&gt;<br />
&lt;li&gt;fastq: 854ms&lt;/li&gt;<br />
&lt;li&gt;async.queue: 1298ms&lt;/li&gt;<br />
&lt;li&gt;neoAsync.queue: 1249ms&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;p&gt;Obtained on node 12.16.1, on a dedicated server.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;If you need zero-overhead series function call, check out&lt;/p&gt;<br />
&lt;p&gt;&lt;a href="<a href="http://npm.im/fastseries" rel="nofollow ugc">http://npm.im/fastseries</a>"&gt;fastseries&lt;/a&gt;. For zero-overhead parallel&lt;/p&gt;<br />
&lt;p&gt;function call, check out &lt;a href="<a href="http://npm.im/fastparallel" rel="nofollow ugc">http://npm.im/fastparallel</a>"&gt;fastparallel&lt;/a&gt;.&lt;/p&gt;</p>
<p dir="auto">&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="#install"&gt;Installation&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#usage"&gt;Usage&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#api"&gt;API&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#license"&gt;Licence &amp;amp; copyright&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;h3&gt;Install&lt;/h3&gt;</p>
<p dir="auto">&lt;p&gt;&lt;code&gt;npm i fastq --save&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;Usage (callback API)&lt;/h3&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
'use strict'</p>
<p dir="auto">const queue = require('fastq')(worker, 1)</p>
<p dir="auto">queue.push(42, function (err, result) {<br />
if (err) { throw err }<br />
console.log('the result is', result)<br />
})</p>
<p dir="auto">function worker (arg, cb) {<br />
cb(null, arg * 2)<br />
}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h3&gt;Usage (promise API)&lt;/h3&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const queue = require('fastq').promise(worker, 1)</p>
<p dir="auto">async function worker (arg) {<br />
return arg * 2<br />
}</p>
<p dir="auto">async function run () {<br />
const result = await queue.push(42)<br />
console.log('the result is', result)<br />
}</p>
<p dir="auto">run()<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;Setting "this"&lt;/h4&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
'use strict'</p>
<p dir="auto">const that = { hello: 'world' }<br />
const queue = require('fastq')(that, worker, 1)</p>
<p dir="auto">queue.push(42, function (err, result) {<br />
if (err) { throw err }<br />
console.log(this)<br />
console.log('the result is', result)<br />
})</p>
<p dir="auto">function worker (arg, cb) {<br />
console.log(this)<br />
cb(null, arg * 2)<br />
}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;Using with TypeScript (callback API)&lt;/h4&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
'use strict'</p>
<p dir="auto">import * as fastq from "fastq";<br />
import type { queue, done } from "fastq";</p>
<p dir="auto">type Task = {<br />
id: number<br />
}</p>
<p dir="auto">const q: queue&lt;Task&gt; = fastq(worker, 1)</p>
<p dir="auto">q.push({ id: 42})</p>
<p dir="auto">function worker (arg: Task, cb: done) {<br />
console.log(<a href="http://arg.id" rel="nofollow ugc">arg.id</a>)<br />
cb(null)<br />
}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;Using with TypeScript (promise API)&lt;/h4&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
'use strict'</p>
<p dir="auto">import * as fastq from "fastq";<br />
import type { queueAsPromised } from "fastq";</p>
<p dir="auto">type Task = {<br />
id: number<br />
}</p>
<p dir="auto">const q: queueAsPromised&lt;Task&gt; = fastq.promise(asyncWorker, 1)</p>
<p dir="auto">q.push({ id: 42}).catch((err) =&gt; console.error(err))</p>
<p dir="auto">async function asyncWorker (arg: Task): Promise&lt;void&gt; {<br />
// No need for a try-catch block, fastq handles errors automatically<br />
console.log(<a href="http://arg.id" rel="nofollow ugc">arg.id</a>)<br />
}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h3&gt;API&lt;/h3&gt;</p>
<p dir="auto">&lt;ul&gt;<br />
&lt;li&gt;&lt;a href="#fastqueue"&gt;&lt;code&gt;fastqueue()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#push"&gt;&lt;code&gt;queue#&lt;b&gt;push()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#unshift"&gt;&lt;code&gt;queue#&lt;b&gt;unshift()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#pause"&gt;&lt;code&gt;queue#&lt;b&gt;pause()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#resume"&gt;&lt;code&gt;queue#&lt;b&gt;resume()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#idle"&gt;&lt;code&gt;queue#&lt;b&gt;idle()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#length"&gt;&lt;code&gt;queue#&lt;b&gt;length()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#getQueue"&gt;&lt;code&gt;queue#&lt;b&gt;getQueue()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#kill"&gt;&lt;code&gt;queue#&lt;b&gt;kill()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#killAndDrain"&gt;&lt;code&gt;queue#&lt;b&gt;killAndDrain()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#error"&gt;&lt;code&gt;queue#&lt;b&gt;error()&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#concurrency"&gt;&lt;code&gt;queue#&lt;b&gt;concurrency&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#drain"&gt;&lt;code&gt;queue#&lt;b&gt;drain&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#empty"&gt;&lt;code&gt;queue#&lt;b&gt;empty&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#saturated"&gt;&lt;code&gt;queue#&lt;b&gt;saturated&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#promise"&gt;&lt;code&gt;fastqueue.promise()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;&lt;a name="fastqueue"&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;h4&gt;fastqueue([that], worker, concurrency)&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;Creates a new queue.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Arguments:&lt;/p&gt;</p>
<p dir="auto">&lt;ul&gt;<br />
&lt;li&gt;&lt;code&gt;that&lt;/code&gt;, optional context of the &lt;code&gt;worker&lt;/code&gt; function.&lt;/li&gt;<br />
&lt;li&gt;&lt;code&gt;worker&lt;/code&gt;, worker function, it would be called with &lt;code&gt;that&lt;/code&gt; as &lt;code&gt;this&lt;/code&gt;,&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;p&gt;  if that is specified.&lt;/p&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;code&gt;concurrency&lt;/code&gt;, number of concurre&lt;/li&gt;<br />
&lt;/ul&gt;</p>
<p dir="auto">&lt;hr&gt;<br />
&lt;p&gt;踩过坑的来评论区说说。&lt;/p&gt;</p>
]]></description><link>https://forum.mj7.cn/topic/7202/fastq队列工具-编程技术参考-模具行业从业者必备知识手册</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 09:34:37 GMT</lastBuildDate><atom:link href="https://forum.mj7.cn/topic/7202.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Apr 2026 21:55:26 GMT</pubDate><ttl>60</ttl></channel></rss>