我想更改节点的HTML,然后等待500毫秒,然后继续我的代码,它必须再次更改。像这样:
centerDiv.innerHTML = "waiting";
pauseMs(interTrialInterval);
...
centerDiv.innerHTML = "going again"
其中pauseMs如下:
function pauseMs(ms) {
ms += new Date().getTime();
while (new Date() < ms){}
}
当我执行代码时,“等待”并没有显示出来,事实上,在挖掘它之后,我感觉在完成pauseMs之后HTML会更新,之后几行代码变为“再次”。
奇怪的是:如果我调试它并跨过代码,它就可以正常工作。
我尝试通过添加offsetHeth来强制重绘,但是没有效果。
centerDiv.innerHTML = "waiting";
centerDiv.offsetHeight;
任何最感谢的帮助, 里斯
编辑: 正如许多人所指出的,这个问题已经在this SO question中得到了广泛的讨论。但是,必须注意,在暂停结束之前,浏览器不会执行此“忙碌暂停”之前请求的DOM更改。
正如所建议的那样,我使用setTimeout重构了我的代码。