Javascript 在for循环json响应中处理数据

Javascript 在for循环json响应中处理数据,javascript,jquery,json,iteration,progress,Javascript,Jquery,Json,Iteration,Progress,我正在为自己的目的做一个实验项目,我被困在获取数据的地方 我正在寻找一些方法/函数,比如PHP for javascript中的flush()函数,因为我正在从MySQL数据库中获取大约1000条记录,并通过JSON对其进行解析。它需要一段时间而没有向用户显示一些反馈,页面持续加载一段时间,然后所有内容立即弹出,我的浏览器必须立即处理大量图像 我正在寻找能够转储已经获取的数据并将其发送到我的函数的东西 我有一个迭代,它以100的增量在maxResults上循环,并进行ajax调用 for(var

我正在为自己的目的做一个实验项目,我被困在获取数据的地方

我正在寻找一些方法/函数,比如PHP for javascript中的flush()函数,因为我正在从MySQL数据库中获取大约1000条记录,并通过JSON对其进行解析。它需要一段时间而没有向用户显示一些反馈,页面持续加载一段时间,然后所有内容立即弹出,我的浏览器必须立即处理大量图像

我正在寻找能够转储已经获取的数据并将其发送到我的函数的东西

我有一个迭代,它以100的增量在maxResults上循环,并进行ajax调用

for(var record = 0; record < maxResults; record+=countPage){
     $.ajax({
        type: "POST",
        url: "json_GetImages.php?limit="+countPage+"&rows="+record,
        contentType: "application/json; charset=utf-8",
        global: false,
         ....
            for (var i = 1; i < jsonObj.data.length; i++) {
                var box = document.createElement('div'); //Define new box
                var size = Math.floor((Math.random()*3)+1);
                 .... 
                functionMakeDiv(jsonObj.data[i].sTitle);
                 ....
for(var记录=0;记录
在javascript/jquery中是否有类似于flush/dump函数的东西可以放在两次迭代中? 还是我在这里工作效率低下

我试过用a代表每个人,但结果是一样的

使用php,只需在迭代中放置一个flush()/ob_flush(),它就会返回当前的迭代数据(转储缓冲区)(我记得是什么?)


提前谢谢你们,我希望你们理解我在这里要解释的内容:)

我看不出你们将这些div放在实际DOM的什么位置,但如果同步循环阻止浏览器刷新布局,你们可以尝试:

var i = 0;
function loop() {

  //Do your processing and inserting elements into DOM here...
  //That's like a body of a for loop, but asynchronous

  i++;
  if(i < jsonObj.data.length)
    setTimeout(loop, 0);
}

loop();
var i=0;
函数循环(){
//在这里进行处理并将元素插入DOM。。。
//这就像for循环的主体,但是异步的
i++;
if(i
某些浏览器在执行javascript时冻结视觉更新并刷新DOM。这种循环方式的作用是让浏览器有机会在实际循环之间刷新页面布局,因为
setTimeout
始终是异步的,即使延迟
0


希望有帮助,干杯

据我所知,没有一种方法可以做到你所想的,你可以将工作卸载到服务器上,然后从服务器上传递html。看看你在做什么,我会诚实地使用angularjs,这样你就可以远离dom操作。我可以通过PHP“回音”div,可能会奏效,但不会当我初始化插件来排序和调整这些div的大小时,它就不能正常工作了?但是我可能会尝试一下,让服务器处理所有的事情。我还发现:得到同样的结果可能会很有帮助,但请注意这个答案供以后参考!我的函数会创建一个div(var box=document.createElement('div');)并将其附加到一个容器中($(“#container”).append(box))也许可以尝试使外部循环异步(和您的问题中的内部循环一样)?它应该已经异步了,这是ajax调用的原因,但可能不是。。。