小编Bri*_*ian的帖子

Bull Queue并发问题

我需要帮助来了解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实例处理吗?

javascript concurrency node.js bull.js

6
推荐指数
4
解决办法
2769
查看次数

导出 CommonJS 模块的附加接口(Typescript)

我正在尝试在 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

5
推荐指数
1
解决办法
1025
查看次数

D3:沿 DOM 更新数据

我在更新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)

d3.js

0
推荐指数
1
解决办法
671
查看次数