setInterval()无法正常工作

时间:2015-10-15 03:29:27

标签: javascript setinterval console.log

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

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时它根本不起作用。对此问题的任何帮助和清晰度将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

//返回undefined。

因为函数返回时未定义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;

}

你可能想要返回一些稍后会被解析的内容。一个promise