У вас все еще та же проблема.Вот дайджест:
Мое определение теста:
var test = {
progress: 0,
increment:function(){
this.progress = this.progress+10;
}
}
test is {progress: 0, increment: function}
test.progress();
test is {progress: 10, приращение: функция}
setTimeout(test.increment, 20)
тест равен {прогресс: 10, приращение: функция}, поскольку метод передается по ссылке !!!
setTimeout( function(){test.increment() }, 20)
тест равен {прогресс:20, increment: function}, поскольку контекст сохраняется !!!
Таким образом, даже если ваш таймер запущен правильно, он будет увеличивать прогресс в любом контексте, который не предназначен.