[英]Javascript setinterval function with arguments
如何在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);
)使用argument
調用waiting()
,獲取返回值,嘗試將其視為函數,並設置該返回值的間隔。 除非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函數將參數存儲在state中。
在節點shell中使用bind的示例:
> 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
setInterval(function(){funca(10,3);},500);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.