2009-07-19 62 views
2

我搞乱了为Palm Pre构建应用程序。Mojo SDK - 设置一个计时器

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

我试过使用普通的老javascript,但它似乎没有工作。

这里是我试过:

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

无论是一个似乎工作。我怎样才能做到这一点?

回答

3

原来的JavaScript框架被Mojo使用。

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

绊倒我是, delay方法改变 this价值,所以延迟功能,绝对不要指望 this将是
this.someFunction.delay(seconds, [functionArgs,]); 

一件事就像你直接调用它一样。

+0

你如何解决你所描述的“这个”问题。如果我有一个称为txtmodel的模型,并且有一个名为value的属性,该怎么办?在延迟函数之外,我只需调用this.txtmodel.value ='foo' – 2009-07-27 02:32:45

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)的书中放置了一些地方,尽管他从来没有解释过这是什么。现在我明白了!