当我在服务器端收到一个“on”事件时,我想并行地启动一个任务,所以它不会阻塞当前的事件循环线程。是否有可能这样做?怎么样?如何使用socket.io和node.js执行异步任务?
我不想阻止服务器端循环,我希望能够发回信息给客户端,一旦任务完成,一些诸如:
client.on('execute-parallel-task', function(msg) {
setTimeout(function() {
// do something that takes a while
client.emit('finished-that-task');
},0);
// this block should return asap, not waiting for the previous call
});
我不知道如果setTimeout将完成这项工作。
我可以使用async.parallel没有问题,但服务器将回答其他请求,而我的(做一些需要一段时间)正在运行?它会同时运行两个代码吗? –
是的,这就是异步的工作方式......它基本上是一个线程(你在node.js中没有线程)......每当有一部分正在等待发生的事情时,其他代码就会运行,并且当发生事件时会调用一个事件正确的处理程序处理它.. http://stevehanov.ca/blog/index.php?id=12 –
如果你需要线程模型,你可能已经选择了worng技术为你的后端...有多个进程之间进行沟通不像线程那样高效..事实上,你会创建使用进程的线程==更高的开销,更多的复杂性,没有支付.. –