Javascript Custom JSON.stringify无法将对象作为一个整体进行stringify,但在迭代一个级别时可以工作

Javascript Custom JSON.stringify无法将对象作为一个整体进行stringify,但在迭代一个级别时可以工作,javascript,json,node.js,Javascript,Json,Node.js,希望有人能发现错误,因为我遇到了麻烦 好的,我为定制的大型对象构建了自己的JSON.stringify。它可能并不完全适合于某些边缘情况的规范,但它只适用于我自己构建的大型对象上的stringify 好吧,它很有效,对大多数对象也很有效,但我有一个对象正在尝试序列化,它失败了,并在退出之前打印它: node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ und

希望有人能发现错误,因为我遇到了麻烦

好的,我为定制的大型对象构建了自己的JSON.stringify。它可能并不完全适合于某些边缘情况的规范,但它只适用于我自己构建的大型对象上的stringify

好吧,它很有效,对大多数对象也很有效,但我有一个对象正在尝试序列化,它失败了,并在退出之前打印它:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
undefined
不是很有帮助。该对象很好,因为对
JSON.stringify(object)
的常规调用工作正常,当我使用
for(obj中的var x)迭代对象时,如果(obj.hasOwnProperty(x)){myStringify(obj);}
工作正常,但是如果我在对象的顶层调用它,它就会下地狱。。。这对我来说真的没有意义,我唯一能想到的是,如果递归以某种方式破坏了某些东西,那么它的级别

解析器:-我正在调用的stringify函数
ObjectIterator.js:-主要用于提供异步迭代

Edit因此,我对对象进行了一级深度的迭代,并将结果字符串与
JSON.stringify(sameLevelDeep)
的字符串进行了比较,它们是相等的。由于输出是相等的,我不确定我是如何解析某个对象的,但它可能是如此大的对象,或者递归量如此之高


编辑2所以,我想我“修复”了这个问题。不是每25次迭代都被推到下一个事件循环,而是每5次推一次。我不知道为什么这会有不同,但它确实。。。我想现在的问题是“为什么会有不同”

好吧,除了帮助一个非常具体的人这是一个非常具体的问题之外,我想把这个问题带到一个不同的地方,这也可能会消除你的问题,也许会帮助其他人

因为您没有指定为什么要经历这个过程,所以我必须将其分解并猜测——并为每个猜测的想法提供解决方案

1。(浏览器)您正试图使用JavaScript处理数据,并向用户提供结果

在网页上下载至少几兆字节的原始数据(“其中一些对象是5-1000万个字符”)以处理和显示结果远远不是最佳结果,您可能应该在服务器端执行此操作并下载预先计算的结果

此外,无论您在做什么,JavaScript都不支持线程。
setTimeout(1,function(){JSON.stringify(data);})应该与您正在做的事情没有太大区别

2。(浏览器)您正试图显示下载的内容

您应该尝试使用内置的JSON.stringify方法下载较小的块,而不是整个1000多万字符的内容

3。(非浏览器)您正试图将JavaScript用于需要线程的应用程序

您应该考虑使用不同的编程语言来编写这个应用程序。 总之

我想你爬错山了,绕着它走一圈,你也可以达到同样的效果。如果你想爬一座山去踢球,有很多山需要它——但不是这座山


翻译:在体系结构上工作以消除障碍,而不是试图解决它,如果你想解决一个问题,有一些问题需要解决——但不是这个问题。

看起来我在ObjectIterator和Parser中留下了一些代码,以便进行调试。。。大多数日志记录和timingI建议尝试使用其他实现对其进行字符串化,例如Chromium中的JSON.stringify,并查看您是否有不同的行为。对,正如我所说的,常规的
JSON.stringify(object)
有效。标准
JSON.stringify()是否有特定的原因
不适合你吗?@Andy E:这是阻塞,其中一些对象一旦字符串化就有500-1000万个字符。