【发布时间】:2014-06-12 20:41:11
【问题描述】:
我的页面上有一些 javascript 需要很长时间才能执行(10-30 秒之间)
代码基本上是这样的:
//Iterate over all the elements in the array
for(int i=0; i<array.length; i++){
//Complex stuff for each element
}
问题是在执行此代码时,UI 没有响应。
有什么办法可以解决这个问题吗?我知道 javascript 具有某种异步性,但我之前从未真正使用过它...
此外,处理元素的顺序必须始终是它们在数组中出现的顺序。
编辑:我在“重复”中使用 setTimeout() 尝试了以下解决方案,但它仍然无法解决我的问题。我想这是因为我的数组的大小不是很大,但是每个元素的计算量都很大。
另外,我想要响应的 UI 是一个动画加载 gif。由于每个项目的计算量太大,所以动画马虎。
【问题讨论】:
-
你可以将循环体转换为一个函数,调用它 next(),复制一个数组的反向副本,如 r=array.slice().reverse(),然后在 next() 中,得到通过调用 r.pop() 获取当前值。如果没有值,则返回,否则执行正常操作并在函数结束时调用 setTimeout(next, 10)。
-
更多重复:stackoverflow.com/…
标签: javascript