在循环对象时更新页面上的DIV元素

时间:2015-03-28 11:30:59

标签: javascript

我有一个函数,它使用 for 循环遍历具有许多元素的对象。循环遍历每个元素时,它连接到服务器并通过ajax发送一些数据,等待响应,然后转到对象中的下一个元素。如果对象有许多元素,则在循环完成之前最多可能需要2分钟或更长时间。我希望在页面上直观地显示在循环完成之前剩下多少元素。

问题是屏幕在循环时冻结。有没有办法在循环对象时更新页面上的DIV元素?

2 个答案:

答案 0 :(得分:1)

我猜setInterval()会有所帮助。它实际上不是一个循环,而是一个定时器,它允许一些函数定期执行。

var i = 0; // our index

var myTimer = setInterval(function(){
    //do anything there
    i++;
    if(i>anyMaxValueYouWant){
        clearInterval(myTimer); // break this "loop"
    }
},10)
 ^^^^
interval between the calls of the above function, in milliseconds

答案 1 :(得分:1)

var a;//let's assume this is your array
...
...
for(var i =0;i<N;i++)
{
 (function(a,b){setTimeout(f(a,b),0);})(i,a[i]);
}
...
...

function f(current, element)
{
 //call your server api here
 //send data to a div using value of current 
}