setTimeout - コールバックの文字列を使用して回避するためにどのように?
-
18-09-2019 - |
質問
setTimeout
を使用している場合、あなたが文字列に実行したいコードを配置する必要があります:
setTimeout('alert("foobar!");', 1000);
しかし、私は、私は、変数内の参照を持っている機能を実行したいです。私はこれを行うことができるようにしたい。
var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);
(実際の生活の中で、アラートがコードとmyGreatFunction
のより長いビットがsetTimeout
が呼び出された内の他の関数へのパラメータとして周りに渡されるですが。)
もちろん、タイムアウトが発生したときに、それが実行されないので、myGreatFunction
が認識機能ではありません。
私はjavascriptのは私がこれをやらせたいが、それはしていません。
setTimeout(function() { myGreatFunction(); }, 1000);
このラウンド良い方法はありますか?
解決
あなたが任意の引数を指定してmyGreatFunction
を呼び出す必要がない場合は、あなたがsetTimeout
機能の参照を渡すことができる必要があります:
setTimeout(myGreatFunction, 1000);
また、あなたは常に、それは(あなたが引用符で囲まれたコードをラップするときに何が起こるかである)を評価する必要がsetTimeout
コードを渡すことは避けるべきです。代わりに、匿名関数内のコードをラップします:
setTimeout(function() {
// Code here...
}, 1000);
の詳細については、Mozillaの開発センターでのsetTimeoutページを参照してください。ます。
スティーブ
他のヒント
それはあなたがそれを行うことはできませんと言った誰ですか?
それがない、コード -
setTimeout(function() { myFunction(); }, 1000);
は完全に有効です。
所属していません StackOverflow