在setTimeout()中将参数传递给匿名函数

时间:2018-09-03 05:11:41

标签: javascript node.js callback anonymous-function

我试图弄清楚为什么以下代码不起作用

function testFunction(fn) {
    setTimeout(fn(1), 1000)
}

this.testFunction(id => console.log("id; " + id))

删除setTimeout()并仅使用fn(1)将控制台记录所需的结果

  

id; 1

2 个答案:

答案 0 :(得分:1)

您的函数接受一个参数,因此它立即被调用。将算法放在匿名函数中。

setTimeout(() => fn(1), 1000)

答案 1 :(得分:0)

Jaromanda X在注释中指出,任何需要传递给匿名函数的参数都必须传递给setTimeout函数,而不是使用方括号表示法-fn(1)-从而调用匿名函数,然后传递给setTimout

function testFunction(fn) {
    setTimeout(fn, 1000, 1)
}