Node.js:JSON.parse阻塞事件循环吗?

使用JSON.parse是将JSONstringparsing为JavaScript对象的最常用方法。

它是一个同步代码,但它实际上阻止事件循环(因为它比用户代码低得多)?

有没有一种简单的方法来asynchronousparsingJSON? 它应该重要的几KB – 几百KB的JSON数据?

一个函数不接受callback阻塞直到它返回一个值。 所以是的,它是JSON.parse块。 但parsingJSON是一项CPU密集型任务,JS是单线程的。 所以parsing将不得不在某一时刻阻塞主线程。 asynchronous只有在等待另一个进程或系统时才有意义(这就是为什么磁盘I / O和networking具有良好的asynchronous感,因为它们比原始CPU处理有更多的延迟)。

我首先certificate,在开始优化parsing之前,parsingJSON实际上是您的应用的瓶颈。 我怀疑这不是。

如果你认为你可能有很多繁重的JSON解码工作,可以考虑将其移出到另一个进程。 我知道这看起来很明显,但成功使用node.js的关键在于名称。

要设置另一个“节点”顶部处理CPU繁重的任务,请使用IPC。 简单的套接字可以实现,但是ØMQ增加了一点放射性的魔力,它支持各种传输。

这可能是连接套接字和发送JSON的开销总体上更encryption集,但它肯定会阻止阻塞。