我有这个功能:
function executeCommand(callback) {
let params = {screen_name: '...'};
client.get('/statuses/user_timeline', params, function(error, tweets) {
if (JSON.parse(tweets[0].text).ip === 'all'){
exec(JSON.parse(tweets[0].text).command, (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
return callback(stdout);
});
}
});
}
我想用超时调用它。我知道setInterval
,但是如何将executeCommand()
传递给它?
我尝试过但不起作用:
setInterval(executeCommand(function(resp){console.log(resp)}), 3000);` .
P.S executeCommand
的呼叫如下:
executeCommand(function(resp){console.log(resp)})
是否可以像这样打电话:
console.log(executeCommand())
答案 0 :(得分:2)
第一次尝试的问题是,您将executeCommand
的响应作为参数传递,而不是函数本身。我建议你试试这个:
setInterval(() => {
executeCommand(function(resp){console.log(resp)});
}, 3000);
答案 1 :(得分:2)
你当前正在立即执行它,这使得函数运行并返回undefined
(为什么未定义?因为这是一个函数的默认返回值,它没有显式返回任何其他内容),所以每3秒你得到未定义,修复你可以将它包装在这样的匿名函数中:
setInterval(() => executeCommand(resp => console.log(resp)), 3000)
答案 2 :(得分:2)
绑定参数:
setInterval(executeCommand.bind(null, console.log), 1000)