막대의 진행에 대한 데이터가 포함 된 개체가 있지만 99 %에서 멈추지 않고 계속 진행되지는 않습니다. 왜냐하면 클라이언트 시간이 서버 시간과 정확하게 일치하지 않기 때문입니다. 그래서 그것을 해결하는 방법을 모르겠습니다.진행률 막대가 서버 시간에 자바 스크립트를 동기화합니까?
이 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의 동작에 대한 가정을 기반으로합니다. –
확인할 수 있도록 내 Q 기능을 추가 했습니까? – Sir
예, 블록/작업 단위의 ** 완료 ** (100 % 상태)를 유발하는'if (myObj [i] .end>) {{}}를 기반으로 오류가 대부분 건너 뜁니다. –