我创建了一个类似蛮力的脚本,它基本上需要检查 27,000 多个选项,每次检查后都会在 div 中显示结果。
脚本编码正确,如果我减少选项的数量,它可以很好地工作,但如果我有很多选项,几秒钟后,会弹出一个窗口,告诉我我的脚本没有响应。在检查这么多选项时如何使其响应。
哦,我差点忘了,它仅在弹出窗口出现时才显示数据(每次检查后显示)(有点奇怪)。
我创建了一个类似蛮力的脚本,它基本上需要检查 27,000 多个选项,每次检查后都会在 div 中显示结果。
脚本编码正确,如果我减少选项的数量,它可以很好地工作,但如果我有很多选项,几秒钟后,会弹出一个窗口,告诉我我的脚本没有响应。在检查这么多选项时如何使其响应。
哦,我差点忘了,它仅在弹出窗口出现时才显示数据(每次检查后显示)(有点奇怪)。
异步批处理可能会解决您的问题:
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));
}