我正在为 Palm Pre 构建一个应用程序。
我有一个简单的问题:如何为某些代码设置一个计时器,以便在经过一定时间后运行?
我尝试使用常规的旧 javascript setTimeout
,但它似乎不起作用。
这是我尝试过的:
setTimeout(this.someFunction, 3000);
setTimeout('this.someFunction()', 3000);
两者似乎都不起作用。我怎样才能做到这一点?
原来 Mojo 使用了原型 javascript 框架。
我能够通过使用来解决这个问题:
this.someFunction.delay(seconds, [functionArgs,]);
让我感到困惑的一件事是该delay
方法更改了 的值this
,因此延迟函数不能期望它this
与您直接调用它一样。
@TM:感谢您指出 Prototype 的 bind() 方法。昨天我在 setTimeout() 问题上苦苦挣扎,最终像你指出的那样使用 Prototype 的 delay() 方法,然后今天早上我在 Mitch Allen 的“Palm webOS”书中看到他在 this.controller 上调用 setTimeout() .window 对象,如下所示:
this.controller.window.setTimeout(this.someFunction.bind(this), someNumberOfMilliseconds);
如果我没有一直在寻找确切的解决方案,我认为我不会注意到 this.controller.window 的使用,现在我注意到本书中使用 this.someFunction.bind(this) 的几个地方,尽管他从不解释那是做什么的。现在我知道!