如何让javascript"呼吸"

Ben*_*ess 5 javascript jquery freeze

我有一些javascript/jquery代码(对于内部网站),它在大型表上进行了大量的客户端处理.它运行得有点慢,但没关系.

问题是它在运行它需要做的循环时会冻结浏览器.这有两个不受欢迎的影响:

  1. 处理微调器(动画gif,但我也试过spin.js,并且有相同的问题)冻结.
  2. 如果表中有足够的行,则循环需要很长时间,浏览器会报告无响应的脚本

有没有一种方法可以在代码中使用某种"呼吸"语句,这样每次(比方说)100次迭代,它会暂停让旋转器旋转,浏览器知道脚本仍在使用它?像(伪代码)的东西:

for (i=0;i<20000;i++)
{
    fnProcessRow();
    if (i % 100 == 0) breath();
}
Run Code Online (Sandbox Code Playgroud)

Lee*_*lor 1

分解 javascript 的一种方法是将处理分成多个块,并使用 setTimeout() 执行下一个“块”

如果您需要一些代码来展示我的意思,请告诉我。