使用JSON.parse是将JSON字符串解析为JavaScript对象的最常用方法。
它是一个同步代码,但是它实际上阻止了事件循环(因为它的级别远低于用户的代码)?
有一种简单的方法可以异步解析JSON吗?对于几KB来说,它应该是否重要 - 几百KB的JSON数据?
答案 0 :(得分:9)
在返回值之前不接受回调阻塞的函数。所以是的JSON.parse
阻止它。但解析JSON是一项CPU密集型任务,而JS是单线程的。所以解析必须在某个时候阻塞主线程。 Async只在等待另一个进程或系统时才有意义(这就是为什么磁盘I / O和网络具有良好的异步感,因为它们具有比原始CPU处理更多的延迟)。
我首先要证明在开始优化它的解析之前,解析JSON实际上是你的应用程序的瓶颈。我怀疑它不是。
答案 1 :(得分:3)
如果您认为可能需要进行大量繁重的JSON解码,请考虑将其移至另一个进程。我知道这看起来很明显,但成功使用node.js的关键在于名称。
要设置另一个“节点”顶部处理CPU重任务,请使用IPC。简单的套接字可以,但ØMQ增加了一点放射性魔法,因为它支持各种传输。
可能是连接套接字和发送JSON的开销总体上更加密集,但它肯定会阻止阻塞。