说我有以下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,那么这里是否存在潜在的解决方法?
答案 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);