Цикл быстрый.Это создаст все таймауты подряд, поэтому все тайм-ауты будут срабатывать одновременно.Вы можете либо сделать время зависимым от переменной цикла, то есть увеличить время на каждой итерации, либо, что я бы сделал, использовать только один тайм-аут и рекурсивный вызов:
(function() {
var data = restorePoints;
var run = function(i) {
setTimeout(function() {
var entry = data[i];
if(entry) {
eval(entry);
run(i+1);
}
}, 1000);
};
run(0);
}());
Обратите внимание, чтоесть разница между eval(string)
и setTimeout(string, ...)
, кроме задержки:
eval
оценит параметр в текущей области, тогда как setTimeout
(и setInterval
) оценит его в глобальномсфера.
Это может иметь отношение к вам.