Можно ли поместить две функции в одну функцию setInterval? - программирование
Подтвердить что ты не робот

Можно ли поместить две функции в одну функцию setInterval?

Я знаю о синтаксисе setInterval:

setInterval (функция, миллисекунды)

Я хочу, чтобы две функции вызывались одновременно, а не на каждые 8 ​​секунд. Есть ли способ сделать это с помощью функции setInterval, как это?

setInterval (function1, function2, 8000)

4b9b3361

Ответ 1

Да, вы можете это сделать, напишите wrapper function для этих двух функций.

Try

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

Ответ 2

Если вам нужна более двух функций, выполняемых в последовательности, и вы часто это делаете, нужно передать анонимную функцию, а затем вызывать каждую функцию по отдельности не идеально. Вы можете абстрагировать это:

// 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

Теперь, когда DRY.

Ответ 3

да

setInterval(function () {

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

Ответ 4

вызовите его, используя другую функцию

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

Ответ 5

Да, вы можете создать функцию, которая принимает произвольное количество функций в качестве параметров, а затем обертывает их все в одну функцию и возвращает эту функцию.

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);

Ответ 6

Вы можете сделать это:

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

Ответ 7

Да, вы можете сделать это следующим образом...

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