【问题标题】:Async stringify (serialize) to JSON in javascript在javascript中将异步字符串化(序列化)为JSON
【发布时间】:2017-03-15 02:02:55
【问题描述】:

在我的 react-native 应用程序中,我需要对大对象进行字符串化(序列化)而不是阻塞 js 线程 - 使用其他线程的异步 api,如下所示:

JSON.stringifyAsync({ foo: "bar" }).then(x => console.log(x));

请不要建议将 JSON.stringify 包装到 Promise 中,它只是延迟了 js 线程的阻塞。

【问题讨论】:

  • 所以第一个选择不起作用。您测试了哪种流式 JSON 解析器,您发现了哪些问题?你有任何关于你已经完成的信息吗?
  • 我不需要流式 json 解析器,我只需要真正的异步解析器。如果你有答案,请给它。你投反对票的原因是什么?
  • @ssube - 流解析器如何帮助解决 OP 的问题?

标签: javascript json parsing asynchronous serialization


【解决方案1】:

我认为目前这是不可能的。这是 node.js 的一个问题(请参阅hereherehere),我认为对于浏览器或其他 JS 引擎来说情况不会更好。

有一个 EcmaScript 提议(参见 here)添加函数 JSON.parseAsyncJSON.stringifyAsync 方法。我不知道这个提案的状态。从提案中:“没有办法翻译这个提案的实际效果。”所以看起来提案人同意目前没有办法这样做。

【讨论】:

  • 这太糟糕了.. 感谢您的回答。如果我理解正确,那么除了字符串之外,没有任何东西可以离开节点线程。
  • @AlexanderDanilov - 是的,这似乎是一个严重的缺点。抱歉,我无法提供更好的东西。
  • 如果你投票重新打开这个问题,我会很高兴,因为你为寻求它的人提供了很好的答案。
【解决方案2】:

也许您可以拆分对象并在最后合并处理的部分。

或者做这样的事情:

async.eachOf(obj,function(value,key,callback){
  async.setImmediate(function(){

    // do something

  });
}, function(err,reply){

});

【讨论】:

猜你喜欢
  • 2011-12-31
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多