node.js和慢速数据库查询

时间:2015-07-15 20:04:09

标签: database node.js event-driven

我正在重写一个c#服务器,我想使用事件驱动模型。 我的服务器需要进行复杂的数据库查询,这可能需要一些时间才能完成。这如何适应事件驱动的模型,我将有一个事件循环处理所有请求?我在等待数据库响应时不想冻结循环。

1 个答案:

答案 0 :(得分:3)

我假设你知道事件循环,你知道它是如何工作的,但以防万一,I'll leave this here

当您向数据库发送查询时,node.js将通过http或其他协议执行此操作,此连接通常在单独的线程上处理。发送请求后,代码将继续,并且callstack将被清除,从而允许事件循环继续。一旦收到响应,就会将一个函数注入到回调队列中,当它在下一行并且事件循环运行时会被处理(并且事件循环仅在调用堆栈为空时运行,请参阅视频。)

只要您所做的一切都是异步的,您就不会冻结事件循环。