我想在 Javascript 循环期间强制重绘。例如:
var s = document.getElementById("foo");
for (var i = 0; i < 10000; i++)
s.innerText = i + " times";
最后更新,但我想观察每个中间步骤。对此问题的常见反应是使用setTimeout
,但是,有三个原因是不可接受的:
- 页面上还有其他按钮/链接等,重要的是在循环运行时不能单击这些按钮/链接。
- 在循环结束时,我想显示一个弹出窗口,如果超时触发,那么标准弹出窗口阻止程序将隐藏它,因为它不再由用户启动。
- 如果用户在循环运行时单击,我希望该单击被缓冲直到循环完成,而不是在循环中途触发。
有没有办法强制浏览器重绘?