在javascript中运行长时间的操作?

use*_*114 8 javascript

有没有一种在javascript中执行长时间运行操作的好方法?例如,我有一个可能需要2分钟才能运行的功能.我们如何打破像这样的大型行动?如果我使用的是java或C,我会在后台线程中执行此任务.有没有办法告诉浏览器暂停脚本的执行,以便它可以让它的前台/ UI线程再次工作?像这样的东西?:

function bigJob() {
    for (i = 0; i < 1000000; i++) {
        someWork();
        sleep(1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Jef*_*f B 4

如果你想让它休眠,你可以间隔运行它:

var i = 0;    
var jobInterval = setInterval(bigJob, 1000);

function bigJob() {
      somework();

      i++;
      if(i>1000000) {
            clearInterval(jobInterval);
      }
}
Run Code Online (Sandbox Code Playgroud)

您必须跟踪函数中的迭代次数,并在完成后终止间隔。

如果 someWork() 很密集,您仍然会在每个时间间隔挂起浏览器。