0

我正在尝试使用 Node 的worker_threadsusing node-worker-threads-pool包装器)包及其DynamicPool.

我的问题是,执行一个线程给一个具有imports 的函数将不起作用,因为该函数将是undefined.

// moduleA.js
import xyz from './xyz.js'

const f = x => {
   xyz () //<-- f is undefined
}

export default f

// moduleB.js
import f from './moduleA.js'


f (1) // 

// moduleC.js
const x = await pool.exec ({
   task: f
})

这是特定问题 node-worker-threads-pool还是 Node问题worker_threads?您知道解决此问题的一些方法吗?

4

1 回答 1

1

这似乎是library的限制,与 modules 无关:

注意:如果task是函数,则不能在其中使用闭包!如果你确实想在函数中使用外部数据,你可以使用 workerData 来传递一些可克隆的数据。

这听起来很像他们正在对函数进行字符串化并仅从该代码创建一个工作者。

请改用工作文件。

于 2020-06-18T20:41:41.690 回答