Синхронизировать события по setInterval 
		
		
		
		Здравствуйте, уважаемые пользователи. 
	У меня на странице в разное время запускаются функции setInterval, которые реализуют мигание некоторых объектов на странице. Как синхронизировать работу этих setInterval'ов? Пример кода. 
setInterval(function() {
        play();
} , 500);
function play() {
            for (obj in Example[iter]) {
                 //здесь что-то происходит
            }
            iter += 1;
}
Помогите интеллектом, кто сколько может :)  | 
	
		
 Kosty@n, 
	Присваивайте id каждому setInterval 
var IntervalID_N;
IntervalID_N = setInterval(function() {});
clearInterval(IntervalID_N) //Удаление;
http://javascript.ru/setInterval  | 
	
		
 Цитата: 
	
 В массив arrFunk добавляете/удаляете нужные функции 
function F1(a) {
   alert('function F1:  =  '+a);
}
function F2(a) {
   alert('function F2:  =  '+a);
}
var arrFunk=[F1,'a',F2,'B'];//массив запускаемых функций и параметров
IntervalID_N = setInterval(function() {
for(var i=0; i<arrFunk.length; i+=2){
   arrFunk[i](arrFunk[i+1]);
}
},2500);
setTimeout('arrFunk.splice(0, 2)',4000);//Удаляем 1-ю функцию с параметром;
//Добавим новую функцию с параметром;
setTimeout("arrFunk.push(F1,'ccc')",4100);
 | 
	
		
 Цитата: 
	
 только что заметил, что тут не хватает нескольких функций \ переменных, но я думаю, что их название говорит само за себя. идея в том, чтобы собрать функции в массив, а потом через время ( 1000 / 60 ) обойти этот массив и каждой передать одинаковую метку времени - Date.now(). 
// ....................................
    /**
     * Вернёт кол-во миллисекунд с 1 Января 1970 00:00:00 UTC
     * @return {number}
     */
    var now = Date.now || function () {
        return +new Date;
    };
    /**
     * Замена для requestAnimationFrame.
     * @param {function(number)} callback
     * @return {number} ID таймаута
     */
    function rAF_imitation(callback) {
        var id = rAF_imitation.unique++,
            info = {
                id:id,
                func:callback
            };
        if (!rAF_imitation.timerID) rAF_imitation.timerID = setInterval(rAF_imitation.looper, 1e3 / FRAMES_PER_SECOND);
        rAF_imitation.queue.push(info);
        return id;
    }
    /**
     * Замена для cancelRequestAnimationFrame
     * @param {number} id
     */
    function rAF_imitation_dequeue(id) {
        var index, queue, eq;
        eq = function (/**@type {{id: number, func: Function}}*/val) {
            return val.id === id;
        };
        queue = rAF_imitation.queue;
        index = LinearSearch(/**@type {Array}*/(queue), eq);
        if (index !== -1) {
            // don't splice
            queue[index] = null;
        }
    }
    /**
     * ID таймаута "перерисовки"
     * @type {number}
     * @private
     */
    rAF_imitation.timerID = null;
    /**
     * Для генерации ID таймаута.
     * @type {Number}
     */
    rAF_imitation.unique = 0;
    /**
     * Очередь обработчиков и их контекстов
     * @type {Array.<{func: Function, id: number}>}
     * @const
     */
    rAF_imitation.queue = [];
    /**
     * Таймер "отрисовки" - пройдется по обработчикам и повызывает их,
     * передав как первый аргумент временную метку "отрисовки"
     * @private
     */
    rAF_imitation.looper = function () {
        var reflowTimeStamp = now(), queue = rAF_imitation.queue, info;
        while (queue.length) {
            info = queue.pop();
            info && info.func.call(window, reflowTimeStamp);
        }
    };
 | 
| Часовой пояс GMT +3, время: 03:23. |