从Javascript中的setTimeout函数中更新对象的属性值

updating attribute value of a object from within a setTimeout function in Javascript

本文关键字:对象 属性 更新 Javascript 中的 setTimeout 函数      更新时间:2023-09-26

我对下面的代码片段有问题。

 var flag = { f: 0 };
 setTimeout(function(flag) {
    flag.f+=1;
 }, duration, flag);
 while(flag.f == 0);
 alert("Asd");

"Asd"不会被警告。页面在一段时间后崩溃。怎么了?

Settimeout停止其余代码的执行。Settimeout将运行,然后while循环将运行,因此它永远不会执行。

这是实际发生的事情的一个非常简化的版本。查看更多信息:

http://ejohn.org/blog/how-javascript-timers-work/

编辑:

在更好地理解你的问题之后,似乎这就是你要找的:

var flag = { f: 0 };
 setTimeout(function(flag) {
    flag.f+=1;
    afterMove()
 }, duration, flag);
function afterMove() {
   alert("move is done!");
}