簡體   English   中英

帶參數的Javascript setinterval函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM