【问题标题】:Pass function as parameter to recursive setTimeout [closed]将函数作为参数传递给递归 setTimeout [关闭]
【发布时间】:2020-05-15 10:51:52
【问题描述】:

此代码不起作用:

  var counter = 0;

  kick(print);

  function kick(f) {
    setTimeout(function(){
      f();  // problem here;
      kick();
    }, 500);
  }

  function print(){
    console.log(counter++);
  }      

浏览器控制台出现以下错误:

Uncaught TypeError: f is not a function

如何在需要的时候正确调用f()

【问题讨论】:

  • 问题是kick();调用,你又需要kick(f);
  • 您调用kick(),但从不向其传递参数。只需使用提供的参数调用它 - kick(f)
  • 顺便说一句,你可以简单地使用setInterval

标签: javascript recursion settimeout


【解决方案1】:

再次传递f

function kick(f) {
   setTimeout(function(){
      f();  // problem here;
      kick(f);
    }, 500);
 }

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多