我创建了一个类似暴力的脚本,它基本上需要检查超过27,000个选项,并且每次检查后都会在div中显示结果。
脚本编码正确,如果我减少了选项的数量就足够了,但如果我有很多选项,几秒钟后会弹出一个窗口,告诉我我的脚本没有响应。如何在检查这么多选项时如何使其响应。
哦,我差点忘了,它只显示弹出窗口时显示数据(每次检查后显示)(有点奇怪)。
答案 0 :(得分:1)
异步批处理可以解决您的问题:
var options = ...; // your code
// I assume you are using something like this
function processAll() {
for(var i=0; i<options.length; ++i) ... // causes unresponsivity
}
// try to use this instead
function batchProcessing(from) {
if(from >= options.length) return;
var to = Math.min(1000, options.length-from);
for(var i=from; i<from+to; ++i) ... // your code
// run the next batch asynchronously, let the browser catch the breath
setTimeout(batchProcessing.bind(null, from+1000));
}