2

我正在为 Palm Pre 构建一个应用程序。

我有一个简单的问题:如何为某些代码设置一个计时器,以便在经过一定时间后运行?

我尝试使用常规的旧 javascript setTimeout,但它似乎不起作用。

这是我尝试过的:

setTimeout(this.someFunction, 3000);
setTimeout('this.someFunction()', 3000);

两者似乎都不起作用。我怎样才能做到这一点?

4

2 回答 2

3

原来 Mojo 使用了原型 javascript 框架。

我能够通过使用来解决这个问题:

this.someFunction.delay(seconds, [functionArgs,]);

让我感到困惑的一件事是该delay方法更改了 的值this,因此延迟函数不能期望它this与您直接调用它一样。

于 2009-07-20T19:39:36.557 回答
1

@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) 的几个地方,尽管他从不解释那是做什么的。现在我知道!

于 2009-10-21T00:37:30.227 回答