setInterval을 초기화 한 전역 변수 sim이 선언되었습니다. progressSim 함수에서 clearTimeout()을 사용했지만 setInterval을 중지하지 않습니다.clearTimeout이 호출 된 후 setInterval이 계속 실행됩니다.
var sim;
function loop(){
var ctx1 = document.getElementById($(allChild[i]).attr('id')).getContext('2d');
dataPercent = $(allChild[i]).attr('data-percent');
cw = ctx1.canvas.width;
ch = ctx1.canvas.height;
sim = setInterval(function() {
progressSim(ctx1);
}, 50);
setTimeout(function() {
i++;
if (i < allChild.length) {
loop();
}
}, 20)
}
loop();
function progressSim(ctx){
diff = ((al/100) * Math.PI*2*10).toFixed(2);
ctx.clearRect(0, 0, cw, ch);
ctx.lineWidth = 15;
ctx.fillStyle = '#09F';
ctx.strokeStyle = "#09F";
ctx.textAlign = 'center';
ctx.fillText(al+'%', cw*.5, ch*.5+2, cw);
ctx.beginPath();
ctx.arc(100, 85, 75, start, diff/10+start, false);
ctx.stroke();
if(al >= 30){
clearTimeout(sim);
}
al++;
}
우려 사항이 있으면 알려주십시오. 미리 감사드립니다.
를 루프 함수를 호출하여
또한 여러에게
sim
간격을 만드는 존재하지 않는 시간 제한sim
나는 사항 clearTimeout 및 위해 clearInterval을 교환 할 생각을 취소하려고하면 적절한 '대응 물'을 사용해야합니다. 그리고 이것을 디버깅하기 위해 지금까지 무엇을 했습니까? 너? 그게 실제로 들어가면 확인해 봤어? – CBroe글쎄, 당신은'loop'을 여러번 호출하여 여러 setInterval을 시작하고 있지만 가장 최근의 것 (sim이 참조하는 것) 만 지워질 것입니다. – Bergi