Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当响应非常大时,jQueryAjax会冻结ui_Javascript_Json_Performance_Jquery - Fatal编程技术网

Javascript 当响应非常大时,jQueryAjax会冻结ui

Javascript 当响应非常大时,jQueryAjax会冻结ui,javascript,json,performance,jquery,Javascript,Json,Performance,Jquery,当我使用jqueryajax函数时,响应非常大~1mb,在调用success函数之前,ui被冻结。我在使用JSON.parse函数和解析大量数据时遇到过这种情况。我相信这个函数是在请求返回时用来将内容格式化为JSON的。这是我正在使用的代码 $.ajax({ url: "/sessions/" + this.get("session_id") + "/get_sample_data", data: params, dataType: 'json',

当我使用jqueryajax函数时,响应非常大~1mb,在调用success函数之前,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上的阻塞?或者有没有其他方法来解决这个问题。我使用的是chrome和chrome canary,这两款产品的效果都是一样的


提前感谢

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

  • 将服务器响应分解为多个请求
  • 将解析分解为多个部分
  • 将响应发送给web worker并在web worker中解析(在旧浏览器中不起作用)
  • 要将解析分解为多个部分,您必须更改jQuery ajax调用以仅返回原始文本,并且必须创建自己的JSON解析器,该解析器可以在
    setTimeout()
    上分块完成工作,以便UI在解析时保持活动状态。这将是一个合理的工作量。我假设您从一个现有的JSON解析器开始,然后必须对其进行修改以保存其状态,使其能够分块工作

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


    对于如何处理大块大数据的一些备选方案,您可以看到问题出在哪里?在jQuery中解析JSON?或者你的代码解析JSON?1MB的JSON?1MB的纯文本???您试图在单个网页上显示什么?也许你应该过度思考你的问题@Amberlamps也许你的意思是“重新思考”?在加载JSON游戏地图或base64编码的精灵地图时,我通常会看到1MB或更多。这是合理的,但有时它们是多余的。1mb是未压缩的GPS数据。我想在这样高的数据水平上测试它,这样我就可以对它进行压力测试,以了解系统的功能。