Javascript:如何将参数传递给回调函数

时间:2013-12-08 17:59:02

标签: javascript callback

我很难理解如何正确地将参数传递给回调函数而不立即调用该函数。

例如,这将按预期工作:

var callBack = function() { ... }
window.setTimeout( callBack, 1000 );

但这会不小心打电话给callBack

var callBack = function(param1, param2) { ... }
window.setTimeout( callBack('foo','bar'), 1000 );

2 个答案:

答案 0 :(得分:8)

传递参数的方法是在时间参数之后,如the documentation of settimeout()中所述。

var timer = window.setTimeout( func, delay, [ param1, param2, ... ]

第一个参数是实际回调,第二个参数是以毫秒为单位的时间,最后一个(可选)参数是要传递给回调的参数数组。

因此,对于您的示例,它将类似于:

window.setTimeout( callBack, 1000, [ "foo", "bar" ] );

您的问题标题略有误导,因为用于将参数传递给回调函数的方法在使用它的代码的实现方面有所不同。正如您可能想象的那样,实际的函数对象及其参数不一定需要一起传递,因为函数执行被推迟到以后的时间;只有这样才能使参数与回调接触。


有关如何将参数传递给回调对象的更一般性说明,您可以查看以下帖子:JavaScript: Passing parameters to a callback function

答案 1 :(得分:7)

您可以按如下方式调用,

var callBack = function(param1, param2) { ... }
window.setTimeout( function(){callBack('foo','bar');}, 1000 );