在node.js REPL中使用SetInterval?

时间:2017-07-18 16:40:07

标签: javascript node.js

说我有以下javascript文件:

function logMe() {
  for(var i=0; i < 4; i++) console.log(i);
}

setInterval(logMe(), 2000);

然后我用命令node打开一个node.js REPL。

然后我用:

加载和评估我的脚本
eval(fs.readFileSync('myScript.js').toString())

我收回错误:

TypeError: "callback" argument must be a function
    at exports.setInterval (timers.js:414:11)
    at eval (eval at <anonymous> (repl:1:68), <anonymous>:5:1)
    at repl:1:1
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:96:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:346:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:545:10)

如果我想在节点REPL中使用setInterval,那么这里是否存在潜在的解决方法?

2 个答案:

答案 0 :(得分:2)

不,这只是你的错字。

setInterval(logMe, 2000);

您需要将函数作为函数传递而不是调用它。

答案 1 :(得分:2)

logMe()将执行函数

setInterval中你需要传递函数

function logMe() {
  for(var i=0; i < 4; i++) console.log(i);
}

setInterval(logMe, 2000);
                 ^ no ()

    function logMe() {
      for(var i=0; i < 4; i++) console.log(i);
    }
    
    setInterval(logMe, 2000);

function logMe() {
  for(var i=0; i < 4; i++) console.log(i);
}

setInterval(logMe(), 2000);