Javascript中的DOM操作在下一个函数完成后才会生效

时间:2015-07-10 12:09:13

标签: javascript animation dom

我想更改节点的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重构了我的代码。

0 个答案:

没有答案