У меня есть объект, который содержит некоторые данные о прогрессии бара, но он продолжает останавливаться на уровне 99% и не будет продолжаться, я верю, потому что время клиента не будет таким же, как время сервера, достаточно точно для этого. Поэтому я не знаю, как его решить.Прогрессивная панель синхронизации javascript к серверному времени?
Эти 2 таймера создаются на стороне сервера и отправляются клиенту.
myOjb[i].end: 1374805587 //seconds since epoch for when 100% is made
myObj[i].strt: 1374805527 //seconds since epoch when it started
Функция, которая вычисляет процент:
function clocker() {
var now = new Date().getTime()/1000;
for (var i in myObj) {
if (myObj[i].end > now) {
var remain = myObj[i].end - now;
var per = (now - myObj[i].strt)/(myObj[i].end - myBuildings[i].strt) * 100;
var per = fix_percentage(per); // stops > 100 and < 0 returns int if true
myObj[i].percentage = Math.ceil(per);
console.log(myObj[i].percentage); //reaches 99 max
if (myObj[i].percentage > 99) {
console.log('test'); //never occurs
return false;
}
break;
} else {
continue;
}
}
setTimeout(clocker, 1000);
}
function fix_percentage(per){
if(per>100)per=100;
if(per<0)per = 0;
return Math.round(per);
}
Как я мог синхронизировать два вместе, так что выбор времени является более точным?
Конечно, весь этот ответ основан на предположении о поведении fix_percentage. –
Я добавил функцию my Q, чтобы вы могли проверить? – Sir
Да, ошибка основана на 'if (myObj [i] .end> now) {' заставляя ** завершение ** (статус 100%) блока/единицы работы пропускаться в основном. –