我正忙着为Palm Pre构建应用程序。
我有一个简单的问题:如何为某些代码设置一个计时器,以便在经过一段时间后运行?
我尝试使用常规的旧javascript setTimeout
,但它似乎无效。
这是我尝试过的:
setTimeout(this.someFunction, 3000);
setTimeout('this.someFunction()', 3000);
似乎都没有工作。我怎么能做到这一点?
答案 0 :(得分:3)
原来,Mojo使用了原型javascript框架。
我能够通过使用:
来解决这个问题this.someFunction.delay(seconds, [functionArgs,]);
让我感到震惊的一件事是delay
方法更改了this
的值,因此延迟函数不能指望this
与您只是简单相同直接调用它。
答案 1 :(得分: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(这个虽然他从未解释过它的作用,但仍在使用。现在我知道了!