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

问题描述 投票:0回答:1

我在使用以下代码片段时遇到问题。

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

“Asd”永远不会被提醒。一段时间后页面崩溃。有什么问题吗?

javascript settimeout
1个回答
0
投票

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!");
}
© www.soinside.com 2019 - 2024. All rights reserved.