Jos*_*iah 4 javascript internet-explorer settimeout
我之前已经问过这个问题了,并且在网上找到了一些关于这个主题的文章,但对于我的生活,我无法弄清楚这一点.我有一组计算模型的Javascript函数,但是有大量的循环使脚本需要一段时间(~4秒).我不介意处理时间,但IE提示警告,因为有太多的执行.
我已经尝试优化我的代码,但我根本无法减少足以绕过IE警告的执行次数.因此,我认为我必须使用setTimeout函数来重置IE中的计数器.
代码很长,我无法弄清楚如何在IE中正确实现setTimeout.我试过模仿这里找到的代码,但由于某种原因,它在第100次迭代后最终崩溃.
我不知道这是否很常见,但如果我发送给他们,有人会介意看一下代码吗?我只是不想在这里发布它,因为它非常冗长.
谢谢!
编辑: 我已经将我的代码放在JSfiddle上,正如一些人所建议的那样.你可以在这里找到它.感谢您的建议,如果有任何问题请告诉我!
我使用的基本方法是将工作分成批次.每批都在一个"纪元"中完成,在批处理完成时,它调用setTimeout()来启动下一个纪元.
假设您有1000次迭代运行; 你可以把它分成100个批次.
function doTheWork(operation, cycles, callback) {
var self = this, // in case you need it
cyclesComplete = 0,
batchSize = 100;
var doOneBatch = function() {
var c = 0;
while(cyclesComplete < cycles) {
operation();
c++;
if(c >= batchSize) {
// may need to store interim results here
break;
}
cyclesComplete++;
}
if (cyclesComplete < cycles) {
setTimeout(doOneBatch, 1);
}
else {
callback(); // maybe pass results here
}
};
// kickoff
doOneBatch();
return null;
};
Run Code Online (Sandbox Code Playgroud)