在完成之前执行flush-javascript

在完成之前执行flush-javascript,javascript,Javascript,我编写了一个函数,它在执行另一个函数之前等待x毫秒。现在我有一个问题,它在完成之前不会执行任何更改 this.changeColor('#99FFCC'); this.pausecomp(this, 'changeColor','#FFFFFF', 1000); changeColor = function (color) { this.inputElem.style.backgroundColor = color; }; pausecomp = function (element

我编写了一个函数,它在执行另一个函数之前等待x毫秒。现在我有一个问题,它在完成之前不会执行任何更改

this.changeColor('#99FFCC');
this.pausecomp(this, 'changeColor','#FFFFFF', 1000);

changeColor = function (color)
{
    this.inputElem.style.backgroundColor = color;
};


pausecomp = function (element, meth, argument, ms)
{
    ms += new Date().getTime();
    while (new Date() < ms) {}
    element[meth](argument);
}
此脚本将按预期执行,但在完成所有操作之前不会更改颜色。所以第一个颜色在500毫秒内不会显示

我不能使用setTimeout

我的主要目标是闪烁文本框的背景,所以如果有一种方法可以用css或任何其他方法来做到这一点,请告诉我


谢谢

试着这样做:

changeColor(this, '#99FFCC');
pausecomp(this, 'changeColor','#FFFFFF', 1000);

changeColor = function (element, color)
{
    element.inputElem.style.backgroundColor = color;
};


pausecomp = function (element, meth, argument, ms)
{
    setTimeout(function() {element[meth](argument); }, ms);
}

我不能使用setTimeout这是你的主要问题。什么可能会阻碍您使用它?这可能是您对ECMAscript所能做的最可怕的事情。。这是在阻止/冻结执行时调用的。我保证有更好的解决方案解决您的问题。一定要调用setTimeout。这是让浏览器更新屏幕的标准方法。或者使用下划线.js中的u0.delay…尽管它也会延迟到setTimeout不管怎样,使用setTimeout的问题可能是回调中的更改?这是可以修复的。@jAndy它可能会在下面某个地方使用,但setTimeout真的会阻止吗?我认为它的观点是相反的。虽然,changeColor从来没有被添加为一种方法。所以你得想想这个out@Mazmart这是学习javascript时的常见障碍。试着从一开始就直截了当地去做,你会在以后遇到更少的问题。使用while循环阻塞浏览器非常可怕,因为jAndy正确地退出了。