애니메이션을 표시하는 루프를 호출하는 setInterval
이 있습니다.clearInterval 후 코드 실행
사용자 입력에 대한 응답으로 clearInterval
일 때 대기열에 하나 이상의 루프 콜백이있을 수 있습니다. clearInterval
문 바로 뒤에 함수 호출을 넣으면 함수 호출이 먼저 끝나고 (화면에 무엇인가 인쇄), 대기중인 루프 콜백이 실행되어 인쇄 할 내용을 지 웁니다.
아래 코드를 참조하십시오.
function loop() {
// print something to screen
}
var timer = setInterval(loop(), 30);
canvas.onkeypress = function (event) {
clearInterval(timer);
// print something else to screen
}
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? // print something else to screen
에 지연을 넣으시겠습니까? 루프 내에서 새로운 인쇄 작업을 수행합니까?
편집 : 답변 해 주셔서 감사합니다. 나중에 참조 할 수있는 문제는 추가 인쇄를 유발 한 이벤트가 루프 내에 묻혀 있었기 때문에 컨트롤이 완료되면 미완료 루프로 되돌려 져서 다시 덮어 쓰게되었습니다. 건배. 당신은 아마 의미 모든
var should;
function loop() {
if(!should) return; // ignore this loop iteration if said so
// print something to screen
}
should = true;
var timer = setInterval(loop, 30); // I guess you meant 'loop' without '()'
canvas.onkeypress = function (event) {
should = false; // announce that loop really should stop
clearInterval(timer);
// print something else to screen
}