我只是试图将一个函数传递给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);

最佳答案

虽然您发布的代码是部分代码,并且不清楚ajaxUpdateOne()的作用,但我假设它调用$.ajax()并根据响应结果更新页面。但是,为了能够将参数传递到稍后在setInterval()中调用的函数中,可以使用以下构造:

var deferredUpdate = function(countOne, countTwo) {
  return function() { ajaxUpdateOne(countOne, countTwo); }
}


setInterval(deferredUpdate(42,3), 8000);
setInterval(deferredUpdate(1,2), 2000);


这里的技巧是您的deferredUpdate()本身返回一个函数,而不是一个值。但是,此结果函数的参数绑定在特定的闭包中。这是函数式编程中的基本技术之一。

关于javascript - 在setInterval中具有作为参数的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21490776/

10-09 18:01
查看更多