如何将函数传递给setInterval?

时间:2018-05-19 13:51:37

标签: javascript node.js

我有这个功能:

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())

3 个答案:

答案 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)