【发布时间】:2011-08-05 22:12:57
【问题描述】:
我可以很容易地在Node.js 中编写非阻塞I/O。这就是整个图书馆的目的。
但是任何完成的计算都是阻塞的。任何通过event emitters are blocking 的消息。
例如,发射事件会立即解决,因此是阻塞的:
var e = new process.EventEmitter;
e.on("foo", function() {
console.log("event");
});
process.nextTick(function() {
console.log("next tick");
});
setTimeout(function() {
console.log("timeout");
}, 0);
e.emit("foo");
> event
> next tick
> timeout
除了在nextTick 中封装调用,我如何使代码非阻塞?
我希望在事件循环的每个周期中尽可能少地进行计算,以便我可以同时为尽可能多的客户端提供服务。
如何以非阻塞方式编写代码?
当我有非阻塞代码时,如何跨多个进程扩展它?
一个选项是等待 WebWorker 子流程 API 完成。
【问题讨论】:
-
首先,90% 的“问题”实际上不是问题,更多的是节点事件库的问题,这应该作为功能请求或 github 上的可能错误提出,至于你的小问题,我会创建一个专门针对该主题的问题,而不是在这个问题中挤压它。
-
@RobertPitt 感谢您指出问题措辞不当。我已经调整过了。我也可能会在 github 上提到它。
-
好一点,谢谢。
标签: javascript node.js blocking eventemitter