在不阻塞UI的情况下迭代数组的最佳方法我需要迭代一些大型数组,并通过API调用将它们存储在主干集合中。什么是最好的方法来做到这一点,而不让循环导致接口变得没有响应?由于返回的数据非常大,Ajax请求的返回也会阻塞。我认为我可以将其拆分,并使用setTimeout使其以较小的块异步运行,但是否有更简单的方法来做到这一点。我认为一个网络工作者会很好,但是它需要改变一些保存在UI线程上的数据结构。我尝试使用它来执行Ajax调用,但是当它将数据返回给UI线程时,接口仍然没有响应。提前谢谢
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
function asyncLoop(arr, callback) { (function loop(i) { //do stuff here if (i < arr.Length) { //the condition setTimeout(function() {loop(++i)}, 1); //rerun when condition is true } else { callback(); //callback when the loop ends } }(0)); //start with 0}asyncLoop(yourArray, function() { //do after loop });//anything down here runs while the loop runs
添加回答
举报
0/150
提交
取消