当我使用JQuery ajax函数并且响应非常大~1mb时,ui会在调用success函数之前被冻结。我已经通过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的阻塞?还是有另一种方法来解决这个问题。我正在使用铬和铬金丝雀,我在两者中得到相同的结果。
提前致谢
答案 0 :(得分:8)
猜测是解析一个巨大的JSON响应是导致延迟的原因。如果是这种情况,那么您有以下选择:
要将解析分解为多个部分,您必须更改jQuery ajax调用以返回原始文本,并且您必须创建自己的JSON解析器,它可以在{{1}上以块的形式进行工作这样UI可以在解析时保持活跃状态。这将是一项可以接受的工作量。我假设您从一个现有的JSON解析器开始,然后您必须修改它以便以一种可以在块中工作的方式保存它的状态。
如果可以适当地修改服务器的接口,则更改服务器接口以检索JSON片段可能是解决问题的更简单方法。
有关如何处理大量数据的其他想法,您可以看到Best way to iterate over an array without blocking the UI