setTimeout appears to execute too fast

前端 未结 2 1004
名媛妹妹
名媛妹妹 2020-12-19 02:47

I\'ve been fiddling around with setTimeout and setInterval, and I cannot get the code to execute the way I would like it to. My goal is to create a setInterval, which calls

相关标签:
2条回答
  • 2020-12-19 03:24

    This statement:

    setTimeout(clearInterval(intID), 10000);
    

    means, "call the function 'clearInterval' passing the value of variable 'intID', and then pass the return value of that and the number 10000 to the function 'setTimeout'."

    In other words, you're calling the function "clearInterval" and then passing the returned value to setTimeout().

    Instead, pass setTimeout() a function:

    setTimeout(function() { clearInterval(intID); }, 10000);
    
    0 讨论(0)
  • 2020-12-19 03:38

    You are not setting up the interval like this:

    setInterval(console.log("I've been called"), 3000);
    

    If you did, console.log would be called immediately -- even before setInterval, since it's an argument to setInterval and arguments have to be evaluated before calling the function that uses them.

    So why are you setting up the timeout like this?

    setTimeout(clearInterval(intID), 10000);
    

    This causes the exact same kind of problem as above.

    Just do the same thing you did when setting up the interval instead:

    setTimeout(function() { clearInterval(intID); }, 10000);
    
    0 讨论(0)
提交回复
热议问题