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

时间:2013-09-17 06:22:02

标签: json node.js

使用JSON.parse是将JSON字符串解析为JavaScript对象的最常用方法。

它是一个同步代码,但是它实际上阻止了事件循环(因为它的级别远低于用户的代码)?

有一种简单的方法可以异步解析JSON吗?对于几KB来说,它应该是否重要 - 几百KB的JSON数据?

2 个答案:

答案 0 :(得分:9)

在返回值之前不接受回调阻塞的函数。所以是的JSON.parse阻止它。但解析JSON是一项CPU密集型任务,而JS是单线程的。所以解析必须在某个时候阻塞主线程。 Async只在等待另一个进程或系统时才有意义(这就是为什么磁盘I / O和网络具有良好的异步感,因为它们具有比原始CPU处理更多的延迟)。

我首先要证明在开始优化它的解析之前,解析JSON实际上是你的应用程序的瓶颈。我怀疑它不是。

答案 1 :(得分:3)

如果您认为可能需要进行大量繁重的JSON解码,请考虑将其移至另一个进程。我知道这看起来很明显,但成功使用node.js的关键在于名称。

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

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