我只是想将一个函数传递给setInterval函数。似乎没有使用我的代码。现在,下面的代码首先工作,但是在调用setInterval函数时如何传递函数参数?
//Works here
ajaxUpdateOne(function(countOne,countTwo) {
var itemCount = countOne;
var totalCount = countTwo;
console.log(itemCount);
console.log(totalCount);
});
//Does not work here.
var myVar = ajaxUpdateOne(function(countOne,countTwo) {
var itemCount = countOne;
var totalCount = countTwo;
console.log(itemCount);
console.log(totalCount);
});
setInterval(myVar,8000);
答案 0 :(得分:3)
目前,您使用匿名函数作为参数调用ajaxUpdateOne()
。 myVar
不是函数。
将您的代码更改为
var myVar = function () {
ajaxUpdateOne(function (countOne, countTwo) {
var itemCount = countOne;
var totalCount = countTwo;
console.log(itemCount);
console.log(totalCount);
});
}
setInterval(myVar, 8000);
答案 1 :(得分:2)
虽然您发布的代码是部分的,并且不清楚ajaxUpdateOne()
做了什么,但我假设它调用$.ajax()
并根据响应结果更新页面。但是,为了能够将参数传递给稍后在setInterval()
中调用的函数,可以使用以下构造:
var deferredUpdate = function(countOne, countTwo) {
return function() { ajaxUpdateOne(countOne, countTwo); }
}
setInterval(deferredUpdate(42,3), 8000);
setInterval(deferredUpdate(1,2), 2000);
这里的诀窍是你的deferredUpdate()
返回一个函数本身,而不是一个值。但是,此结果函数的参数绑定在特定的闭包中。这是函数式编程的基本技术之一。