nodejs和node-webworker

时间:2010-11-11 15:24:28

标签: node.js

所以这个整洁的图书馆正在帮助我做一些事情,但它与其他人的表现很奇怪 我可以在它的github回购历史中看到: https://github.com/pgriess/node-webworker/commit/3cd733ec1df946a1dc55b5fcde7388097ac0f6a2

每个童工都会将控制台正确导出到其上下文中。我的理解是,当(例如)子工作者调用将在父进程的stdout(产生子工作者的那个)中显示的console.log()时。我认为这是正确的吗?

我问这个是因为我在worker中使用console.log()但是无法在终端标准输出上查看输出。

THX


更新:
所以我在这里找到了更深层次的问题我今天正在调试node-webworker源代码,发现与coffeescript不兼容,这就是我使用的...我在github node-webworker repo上发布了一个问题(和建议的解决方案):
https://github.com/pgriess/node-webworker/issues#issue/14

解释我发布在github上:
“因为coffeescript包装了每个文件,它用lambda块编译: (function(){...})在coffeescript文件(onmessage,onerror)的全局范围内创建的所有处理程序实际上不是全局的,而是包含在同一个lambda块中,因此对webworker-child.js设置不可见脚本...因此workerCtx.onmessage是未定义的,因此是错误的,因此工作人员不会收到来自主人的消息......

coffeescript正在得到广泛使用,他们决定将每个脚本包装在lambda块中以保护全局命名空间是有效的。因此我认为,在node-webworker中,不应该声明onmessage / onerror处理程序,因为它们当前是全局变量,而是应该传递给某种全局的init()函数(当函数被附加到workerCtx时)工人正在webworker-child.js内设置)。这样他们被宣布的地方就不重要了......“


刚刚测试了我的本地存储库上的补丁和使用init_handlers()函数的建议解决方案(github上的问题14票证)确实解决了与coffeescript不兼容的问题

0 个答案:

没有答案