我有一个函数,它使用 for 循环遍历具有许多元素的对象。循环遍历每个元素时,它连接到服务器并通过ajax发送一些数据,等待响应,然后转到对象中的下一个元素。如果对象有许多元素,则在循环完成之前最多可能需要2分钟或更长时间。我希望在页面上直观地显示在循环完成之前剩下多少元素。
问题是屏幕在循环时冻结。有没有办法在循环对象时更新页面上的DIV元素?
答案 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
}