setInterval()没有按预期工作

setInterval() not working as intended

本文关键字:工作 setInterval      更新时间:2023-09-26

我编写了一个函数,当调用时只返回5,但是当我在setInterval()中console.log该函数时,它返回的正是我所期望的。那么为什么它在调用时不起作用呢?

function countdown(seconds){
  var tick = 0;
  setInterval(function() {
    if (seconds > tick) {
      seconds--;
      console.log(seconds); //counts down as expected.
    }
  }, 1000);
  return seconds;
}
console.log(countdown(5)); //returns undefined.

另外,我知道setTimeout()是首选,但当我换出setInterval时,它根本不起作用。任何帮助和澄清这个问题将非常感谢它。

//返回定义。

因为函数返回时没有定义seconds。参见函数体。直到函数返回才调用setInterval

function countdown(seconds){
  var tick = 0;
  setInterval(function() {
    if (seconds > tick) {
      seconds--;
      console.log(seconds); //counts down as expected.
    }
  }, 1000);
  // NOTHING HAS ASSIGNED TO seconds TILL THIS POINT
  return seconds;
}

您可能想要返回一些稍后在也就是。一个承诺。