我正在分配一个变量,一个使用setInterval的函数,但我不想让函数运行直到我调用它.但是,该函数仅从赋值语句运行.
sessionClock = setInterval(function() {
console.log("Hi")
}, 1000)
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样的:
sayHi = function() {
console.log("Hi");
}
var sayHiStarter = setInterval(sayHi, 1000);
Run Code Online (Sandbox Code Playgroud)
这两个都启动该功能,并将"Hi"记录到控制台.
为什么它在分配时运行?我能做些什么来解决这个问题?
如果您只想将函数绑定到setInterval,但稍后再调用它,则可以使用bind:
var sessionClock = setInterval.bind(null, function() {
console.log("Hi")
}, 1000);
//... later
var myInterval = sessionClock(); // start the timer
// ... later if you need to clear it
clearInterval(myInterval);Run Code Online (Sandbox Code Playgroud)
原则上,bind返回一个新函数,该函数setInterval使用预定义的参数调用原始函数(在本例中).因此,当您调用时sessionClock,将调用返回的函数.还有其他方面bind,但它们似乎并不适用于此背景.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |