Why does the setInterval callback execute only once?

假装没事ソ 提交于 2019-11-26 01:25:46

问题


I have this counter I made but I want it to run forever, it\'s really simple, what am I doing wrong here?

function timer() {
  console.log(\"timer!\")
}

window.setInterval(timer(), 1000)

回答1:


You used a function call instead of a function reference as the first parameter of the setInterval. Do it like this:

function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);

Or shorter (but when the function gets bigger also less readable):

window.setInterval( function() {
  console.log("timer!");
}, 1000)



回答2:


setInterval and setTimeout must be used with callbacks, like:

setInterval(timer, 1000);

or unnamed functions:

setInterval( function() { console.log("timer!"); }, 1000 );

Why your code is not working - when you pass a function as argument to another function with brackets e.g. doSomething ( someFunc() ) you are passing the result of the function.

When the function is passed as object e.g. doSomething ( someFunc ) you are passing a callback. This way someFunc is passed as reference and it is executed somewhere in the calling function. This is the same as the pointers to functions in other languages.

A common mistake is to use the these two functions as shown at w3schools. This makes an implicit call to eval.



来源:https://stackoverflow.com/questions/10182714/why-does-the-setinterval-callback-execute-only-once

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!