356

using という関数にパラメータを渡す方法を教えてくださいsetInterval

私の例setInterval(funca(10,3), 500);は正しくありません。

4

18 に答える 18

600

実際の関数がすぐに実行されないように、無名関数を作成する必要があります。

setInterval( function() { funca(10,3); }, 500 );
于 2009-01-19T14:53:48.957 に答える
91

それらをパラメーターとして setInterval に追加します。

setInterval(funca, 500, 10, 3);

あなたの質問の構文は eval を使用していますが、これは推奨される方法ではありません。

于 2009-01-19T14:54:32.903 に答える
89

現在ES5では、メソッド関数プロトタイプをバインドしています:

setInterval(funca.bind(null,10,3),500);

ここを参照

于 2012-10-01T03:42:03.940 に答える
33

パラメーターとしてではなく、関数オブジェクトのプロパティとしてパラメーターを渡すことができます。

var f = this.someFunction;  //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);

次に、関数someFunctionで、パラメーターにアクセスできます。これは、スコープが自動的にグローバル空間に移動し、最初に setInterval を呼び出したクラスへの参照が失われるクラス内で特に役立ちます。このアプローチでは、上記の例の「someFunction」の「parameter2」に適切なスコープがあります。

于 2011-12-14T19:37:51.237 に答える
18

無名関数を使用できます。

setInterval(function() { funca(10,3); },500);
于 2009-01-19T14:55:23.307 に答える
13

最も実用的な答えは tvanfosson によるものです。私にできることは、ES6 で更新されたバージョンを提供することだけです。

setInterval( ()=>{ funca(10,3); }, 500);
于 2016-07-02T00:12:38.270 に答える
7

引数を引用するだけで十分です。

OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)

KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)

'各引数の一重引用符に注意してください。

IE8、Chrome、FireFox でテスト済み

于 2012-01-25T17:23:58.317 に答える
3
const designated = "1 jan 2021"

function countdown(designated_time){

    const currentTime = new Date();
    const future_time = new Date(designated_time);
    console.log(future_time - currentTime);
}

countdown(designated);

setInterval(countdown, 1000, designated);

これを行う方法はたくさんありますが、個人的には、これはクリーンで甘いものです。

于 2020-10-17T20:24:34.923 に答える
0

これはうまくいきsetInterval("foo(bar)",int,lang);ます.... JonKleiserが私を答えに導きます。

于 2011-12-04T07:10:41.567 に答える
0

underscore js というライブラリを使用できます。これは bind メソッドに優れたラッパーを提供し、同様にはるかにクリーンな構文です。指定したスコープで関数を実行できるようにします。

http://underscorejs.org/#bind

_.bind(関数、スコープ、*引数)

于 2015-03-04T15:33:53.377 に答える
0

その問題は、クロージャーの使用の良いデモンストレーションになります。アイデアは、関数が外側のスコープの変数を使用するということです。ここに例があります...

setInterval(makeClosure("Snowden"), 1000)

function makeClosure(name) {
var ret

ret = function(){
    console.log("Hello, " + name);
}

return ret;
}

関数「makeClosure」は、外部スコープ変数「name」にアクセスできる別の関数を返します。したがって、基本的には、「makeClosure」関数に任意の変数を渡し、「ret」変数に割り当てられた関数でそれらを使用する必要があります。効果的に、setInterval は「ret」に割り当てられた関数を実行します。

于 2019-01-02T11:57:14.143 に答える
0

別の解決策は、そのような関数を渡すことです(ダイナミクス変数がある場合): setInterval('funca('+x+','+y+')',500);

于 2014-02-16T07:46:40.337 に答える