У меня наконец есть ответ: есть только один таймер, который оживляет все на странице. Если в очередях что-то есть, создается таймер, который перемещает все, и как только все будет сделано, таймер уничтожается:
Используемый HTML:
<div id="test1" class="tests" style="background-color:#FFF; border:1px solid #000; width:40px; height:40px; position:absolute; left:0px; top:0px;"></div>
<div id="test2" class="tests" style="background-color:#FFF; border:1px solid #000; width:40px; height:40px; position:absolute; left:0px; top:50px;"></div>
Используемый JavaScript:
var setIntervalDecorated = setInterval;
setInterval = function(func, delai) {
var id = setIntervalDecorated(func, delai);
console.log('setInterval: ' + id + ' (' + delai + 'ms)');
return id;
};
var clearIntervalDecorated = clearInterval;
clearInterval = function(id) {
console.log('clearInterval: ' + id);
clearIntervalDecorated(id);
};
Кейс для испытаний:
Тест 1
$('#test1').animate({ left: '+=500' }, 5000, function() { console.log('test1: Animation complete'); });
setInterval: 5 (13ms)
test1: Animation complete
clearInterval: 5
Тест 2
$('.tests').animate({ left: '+=500' }, 5000, function() { console.log('tests: Animation complete'); });
setInterval: 5 (13ms)
tests: Animation complete
tests: Animation complete
tests: Animation complete
clearInterval: 5
Тест 3
$('#test1').animate({ left: '+=500' }, 5000, function() { console.log('test1: Animation complete'); });
$('#test2').animate({ left: '+=500' }, 5000, function() { console.log('test2: Animation complete'); });
setInterval: 5 (13ms)
test1: Animation complete
test2: Animation complete
clearInterval: 5
Тест 4
$('#test1').animate({ left: '+=500' }, 5000, function() { console.log('test1: Animation complete'); });
setTimeout(function() { $('#test2').animate({ left: '+=500' }, 5000, function() { console.log('test2: Animation complete'); }); }, 1000);
setInterval: 5 (13ms)
test1: Animation complete
test2: Animation complete
clearInterval: 5
Спасибо