是否可以在一个setInterval函数中放入两个函数?

时间:2014-02-18 09:13:58

标签: javascript jquery

我知道setInterval语法:

  

的setInterval(函数,毫秒)

我希望同时调用两个函数,而不是每8秒调用一个函数。是否有任何方法可以通过这样的setInterval函数来完成它?

  

setInterval(function1,function2,8000)

7 个答案:

答案 0 :(得分:14)

是的,你可以这样做,为这两个函数写一个wrapper function

尝试

setInterval(function(){ function1(); function2(); },8000)

答案 1 :(得分:7)

如果你需要在一个序列中执行两个以上的函数而你经常这样做,那么必须通过一个匿名函数然后单独调用每个函数并不理想。你可以抽象一下:

// For functions with side effects
function sequence() {
  return [].reduce.call(arguments, function(f,g) {
    return function() {
      f.apply(this, arguments);
      g.apply(this, arguments);
    };
  });
}

function hi(){ console.log('hi') }
function say(){ console.log('how are you?') }
function bye(){ console.log('bye') }

setTimeout(sequence(hi, say, bye), 1000);
//^ ...
//  hi
//  how are you?
//  bye

现在那是干的。

答案 2 :(得分:3)

setInterval(function () {

    function1();
    function2();
}, 8000);

答案 3 :(得分:3)

使用其他功能

来调用它
setInterval(function(){
    function1();
    function2();
},8000)

答案 4 :(得分:2)

是的,您可以创建一个函数,它将任意数量的函数作为参数,然后将它们全部包装在一个函数中并返回该函数。

function a() { alert("aaa"); }
function b() { alert("bbb"); }

function combine() {
    var args = arguments;

    // Return a single function, which when invoked,
    // will invoke all the functions that were passed to combine.
    return function () {
        for (var i = 0; i < args.length; i++) {
            args[i]();
        }
    };
}

setTimeout(combine(a, b), 2000);

答案 5 :(得分:1)

你可以这样做:

setInterval(function() {
    function1();
    function2();
}, 8000);

答案 6 :(得分:1)

是的,您可以通过以下方式实现...

setInterval(function(){
    function1();
    function2();
},8000)