当响应非常大时,JQuery ajax会冻结ui

当我使用JQuery ajax函数并且响应非常大~1mb时,ui会在调用成功函数之前被冻结。 我已经通过JSON.parse函数和解析大量数据来体验这一点。 我相信这个函数用于返回将内容格式化为JSON的请求。 这是我正在使用的代码。

$.ajax({ url: "/sessions/" + this.get("session_id") + "/get_sample_data", data: params, dataType: 'json', type: "GET", success: function (response) { success(response); } }); 

反正是否有覆盖响应的代码,所以我可以将解析分成几部分,并希望最小化对ui的阻塞? 还是有另一种方法来解决这个问题。 我正在使用铬和铬金丝雀,我得到了相同的结果。

提前致谢

猜测是解析一个巨大的JSON响应是导致延迟的原因。 如果是这种情况,那么您有以下选择:

  1. 将服务器响应分解为多个请求。
  2. 将解析分解为多个部分。
  3. 将响应发送给Web worker并在Web worker中解析(在旧版浏览器中不起作用)。

要将解析分解为多个部分,您必须更改jQuery ajax调用以返回原始文本,并且您必须创建自己的JSON解析器,它可以在setTimeout()上以块的forms工作,以便UI在解析时可以保持活力。 这将是一项可以接受的工作量。 我假设你从一个现有的JSON解析器开始,然后你必须修改它以它可以在块中工作的方式保存它的状态。

如果可以适当地修改服务器的接口,则更改接口到服务器以检索JSON片段可能是解决问题的更简单方法。

有关如何以块的forms处理大数据的一些替代想法,您可以看到迭代数组而不阻塞UI的最佳方法