我需要帮助来了解Bull Queue(bull.js)如何处理并发作业。
假设我有10个Node.js实例,每个实例都实例化连接到同一Redis实例的Bull Queue:
const bullQueue = require('bull');
const queue = new bullQueue('taskqueue', {...})
const concurrency = 5;
queue.process('jobTypeA', concurrency, job => {...do something...});
Run Code Online (Sandbox Code Playgroud)
这是否意味着在所有10个节点实例中全局最多有5个(并发)类型的并发运行作业jobTypeA?还是我误会了,并发设置是每个节点的实例?
如果一个Node实例指定不同的并发值会怎样?
我可以确定作业不会被多个Node实例处理吗?
我正在尝试在 Typescript/React 中使用一个简单的 JS 库,但无法为其创建定义文件。该库是 google-kgsearch ( https://www.npmjs.com/package/google-kgsearch )。它以 CommonJS 风格导出单个函数。我可以成功导入和调用该函数,但无法弄清楚如何将参数类型引用到结果回调。
这是大部分库代码:
function KGSearch (api_key) {
this.search = (opts, callback) => {
....
request({ url: api_url, json: true }, (err, res, data) => {
if (err) callback(err)
callback(null, data.itemListElement)
})
....
return this
}
}
module.exports = (api_key) => {
if (!api_key || typeof api_key !== 'string') {
throw Error(`[kgsearch] missing 'api_key' {string} argument`)
}
return new KGSearch(api_key)
}
Run Code Online (Sandbox Code Playgroud)
这是我对其进行建模的尝试。大多数接口对服务返回的结果进行建模:
declare module 'google-kgsearch' {
function KGSearch(api: string): KGS.KGS;
export = …Run Code Online (Sandbox Code Playgroud) javascript commonjs typescript typescript-typings typescript2.0
我在更新DOM 中子节点上的数据属性时遇到问题。我正在使用 SVG 并将一组数据绑定到父组 ('g') 元素。然后这些组包含一个圆圈和一些文本。当我第一次创建圆圈时,来自父“g”的数据会自动传入并绑定到圆圈。我无法弄清楚的是,当我更新父“g”元素上的数据时,如何更新子“圆”节点上的数据。
这是一个解释我正在尝试做的事情的示例:
var test = svg.selectAll("g").data([1,2,3,4]);
test.enter().append("g");
test.append("circle");
Run Code Online (Sandbox Code Playgroud)
我现在有以下 DOM:
svg -> g (__data__ = 1) -> circle (__data__ = 1)
g (__data__ = 2) -> circle (__data__ = 2)
g (__data__ = 3) -> circle (__data__ = 3)
g (__data__ = 4) -> circle (__data__ = 4)
Run Code Online (Sandbox Code Playgroud)
现在我想映射新数据:
var test2 = svg.selectAll("g").data([9,8,7,6]);
Run Code Online (Sandbox Code Playgroud)
这给出了以下 DOM:
svg -> g (__data__ = 9) -> circle (__data__ = 1)
g (__data__ = 8) -> circle (__data__ …Run Code Online (Sandbox Code Playgroud)