1

1分待ってから関数f()を実行したいと思います。Javascriptにはsleep()関数がないことがわかりましたが、setInterval()またはsetTimeout()関数を使用できます。

window.setInterval()関数は機能しますが、これは私が望むものではありません。f()を一度だけ実行したい。次のようにsetTimeout() 関数を使用しようとしました。

var MyNamespace {
  ...
  f: function() {
  },
  ...
  click: function() {
    ...
    setTimeout("this.f()", 60000); // f() is never executed
    // setTimeout(this.f(), 60000); f() is executed immediately without timeout
    // window.setTimeout(...) doesn't help
  },
  ...
}

ここで何が問題なのですか?

コードはFirefox拡張機能の一部です。

4

4 に答える 4

4

問題があります: "this.f()". それを次のように置き換えます。

setTimeout(this.f.bind(this), 60000);

そしてそれはうまくいくはずです。を使用するのと同様に、 に文字列を渡すことsetInterval()は決して良い解決策ではありませんeval()

こちらもご覧ください

于 2012-06-02T13:04:31.863 に答える
3

試す

setTimeout( this.f.bind(this), 60000 );

setTimeoutグローバル コンテキストで評価されるため、文字列を に渡さないでください。

于 2012-06-02T13:04:23.137 に答える
1

Chrome でタイマーを実行している場合は、nsiTimer も確認してください: https://developer.mozilla.org/en/nsITimer

于 2012-06-03T04:24:03.077 に答える