2

私は、Palm Pre 用のアプリケーションの構築をいじっています。

簡単な質問があります。特定の時間が経過した後に一部のコードが実行されるようにタイマーを設定するにはどうすればよいですか?

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

これが私が試したことです:

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

どちらも機能していないようです。どうすればこれを達成できますか?

4

2 に答える 2

3

プロトタイプの JavaScript フレームワークが Mojo で使用されていることが判明しました。

以下を使用して、この問題を解決できました。

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

私をつまずかせたことの 1 つは、delayメソッドが の値を変更したことですthis。そのため、遅延関数は、this単に直接呼び出した場合と同じになることを期待してはなりません。

于 2009-07-20T19:39:36.557 に答える
1

@TM: プロトタイプの 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 に答える