Простой механизм:
var intervalWork = (function() {
var workers = [], wi = 0;
var interval = setInterval(function() {
if (!workers.length) return;
workers[wi](wi);
wi = (wi + 1) % workers.length;
}, 60 * 1000);
return function(w) {
workers.push(w);
};
})();
Затем у вас есть функция под названием "intervalWork", которая позволяет добавить функцию в очередь.Будет запущена одна функция на интервал таймера (здесь 60 секунд).Функции передают свой индекс в очередь;это не кажется интересным, но позволяет распечатать эти сообщения.
Функция будет вызываться так:
intervalWork(function(index) {
// do interesting stuff
console.log("Function " + index + " " + new Date());
});
Или вы можете вызвать ее и передать имяуже определенной функции:
intervalWork(someRandomFunction);
Конечно, вы могли бы сделать это изумительным и обеспечить другие режимы выполнения или что-то еще.Вы не описали всю суть этого кода, поэтому я не знаю, что еще вам нужно.
edit - еще одно замечание: многие могут (справедливо) предложитьчто вместо таймера, управляемого браузерным механизмом setInterval()
, лучше использовать setTimeout()
и выполнить настройку каждого последующего таймера самостоятельно.Это может быть важно в тех же случаях, что и у вас, когда объем выполняемой работы не ограничен, потому что вы не контролируете, что выполняют эти «рабочие» функции.Однако базовая настройка будет такой же.