setInterval関数で引数を渡すにはどうすればよいですか?例:
intId = setInterval(waiting(argument), 10000);
エラーが表示されます: useless setInterval call (missing quotes around argument?)
setInterval関数で引数を渡すにはどうすればよいですか?例:
intId = setInterval(waiting(argument), 10000);
エラーが表示されます: useless setInterval call (missing quotes around argument?)
匿名関数を使用する
intId = setInterval(function(){waiting(argument)}, 10000);
waiting()
これにより、引数を使用して呼び出すパラメーターのない無名関数が作成されます
setInterval()
または、関数のオプションのパラメーターを使用します。
intId = setInterval(waiting, 10000, argument [,...more arguments]);
コード(intId = setInterval(waiting(argument), 10000);
)はで呼び出しwaiting()
、argument
戻り値を受け取り、それを関数として処理しようとし、その戻り値の間隔を設定します。別の関数を返す関数でない限りwaiting()
、関数は関数としてしか扱うことができないため、これは失敗します。数値/文字列/オブジェクトを関数に型キャストすることはできません。
あなたが使用することができますFunction#bind
:
intId = setInterval(waiting.bind(window, argument), 10000);
window
指定されたコンテキスト( )とオプションの引数を使用してターゲット関数を呼び出す関数を返します。
この方法を使用します。
var interval = setInterval( callback , 500 , arg1 , arg2[, argn ] );
[...]
function callback(arg1, arg2[, etc]){
}
詳細はこちら:window.setInterval
bind 関数と apply 関数を使用して、引数を状態に格納できます。
ノード シェルでバインドを使用する例:
> var f = function(arg) { console.log (arg);}
> f()
undefined
> f("yo")
yo
> var newarg = "stuff";
> f(newarg)
stuff
> var fn = f.bind(this, newarg);
> fn()
stuff
> var temp = setTimeout(fn,1000)
> stuff