Javascript 处理Node.js中的下一个事件

Javascript 处理Node.js中的下一个事件,javascript,node.js,callback,eventqueue,Javascript,Node.js,Callback,Eventqueue,对于每个请求可能需要一两秒钟的应用程序,是否可以在事件循环的每次迭代中只处理一段操作代码? 例如: function foo() { ...operative code... ...start processing the next event here... ...continue with foo() here.... } 是这样的吗 function foo() { ...operative code... process.nextTick(fun

对于每个请求可能需要一两秒钟的应用程序,是否可以在事件循环的每次迭代中只处理一段操作代码? 例如:

function foo()
{
    ...operative code...
    ...start processing the next event here...
    ...continue with foo() here....
}
是这样的吗

function foo()
{
    ...operative code...
    process.nextTick(function() {
        ...continue with foo() here...
    });
}

如果是这样,节点是否会自动开始处理队列中下一个事件?

如果时间花在IO上,节点的非阻塞模型将自动处理并发性

如果它没有花费在IO中,那么使用process.nextTick延迟代码的执行是正确的,这样其他请求就可以处理更改。下面是一篇好文章:


您的假设是正确的,您应该将工作划分为更小的执行块,并使用
process.nextTick
计划下一个块。需要在下一次勾选时执行的所有其他计划事件将在所需执行块之前处理。

您的操作代码是否基于IO?通常,当我有东西运行一两秒钟时,大部分时间都是IO时间。如果是这种情况,那么节点将自动处理并发,因为它的IO模型是非阻塞的。@tilleryj假设它不是基于IO的,是否有办法跳转到下一个事件并稍后返回以继续处理?@tilleryj和我意识到非IO函数需要大量代码才能花费一秒钟以上的时间。但我真的只是想了解事件循环是如何工作的,以及我对它有多大的控制权。谢谢。另外,所有节点的IO调用是否都是顺序的?假设我有类似于,
db.query(query,callback1);db.query(另一个查询,callback2)。callback1总是首先被调用吗?不会。它们将按照查询返回的顺序被调用。但是如果两个调用都涉及到写入磁盘呢?也许像这样的东西可以更好地说明我的问题,
file.write(somethingLong,callback1);write(somethingShort,callback2)。在这种情况下,callback1不总是先被呼叫吗?不确定。但是,fs.write的文档说,在不等待回调的情况下,不应该对同一文件多次调用write: