2009-07-19 5 views
2

私はPalm Pre用のアプリケーションを構築するのが面倒です。Mojo SDK - タイマーを設定する

私は簡単な質問があります:一定の時間が経過した後に実行するために、いくつかのコード用のタイマーを設定するにはどうすればよいですか?

普通の古いjavascript setTimeoutを使ってみましたが、うまくいかないようです。

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

どちらも1が動作しているようです。ここでは

は、私が試したものです。どうすればこれを達成できますか?

答えて

3

プロトタイプのjavascriptフレームワークがMojoによって使用されていることがわかります。

私が使用してこの問題を解決することができた:私を倒してしまった。

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

一つはdelay方法がthisの値を変更し、その遅れ関数はthisがされることを期待してはいけないということでしたあなたが単にそれを直接呼び出したのと同じです。

+0

ここで説明した「この」問題をどのように回避しますか。 valueというプロパティを持つtxtmodelというモデルがあればどうでしょうか。遅延関数の外では、私はthis.txtmodel.value = 'foo'を呼び出すだけです。 –

+0

これは私のためのちょっとした瞬間でした。私は単にこれを私の遅延関数に渡しています。ヒントをありがとう! –

+0

@codyもう一つの(おそらくもっと良い)解決策は、プロトタイプの "bind"メソッドを使って、 "this"がそのメソッドが呼び出されたときに常に期待しているものであることを確認することです。 –

1

@TM:Prototypeのbind()メソッドを指摘してくれてありがとう。私は昨日setTimeout()問題に苦しんでいて、あなたが指摘したようなPrototypeのdelay()メソッドを使ってしまいました。そして今朝私はthis.controllerのsetTimeout()を呼び出していたMitch Allenの "Palm webOS"そのような.windowオブジェクト、:
this.controller.window.setTimeout(this.someFunction.bind(this), someNumberOfMilliseconds);

私はまさにその解決策を探していなかった、そして今、私はいくつかに気付いていた場合、私はthis.controller.windowの使用に気づいているだろうとは思いませんbook.SomeFunction.bind(this)が使われている本の場所。彼はそれが何をしているか決して説明しません。今私は知っている!

関連する問題