스왑이 발생하면 시각적으로 표시해야하는 버블 정렬 기능이 있습니다. 그러나 많은 접근법 후에 애니메이션을 멈추지 않고 루프를 계속 실행합니다. (우리는 JavaScript 만 사용할 수 있습니다). 웹 사이트에 애니메이션이 완료 될 때까지 기다릴 수있는 방법이 있습니까? @cookie 괴물 이미 설명코드 종료가 완료 될 때까지 for 루프가 대기합니다. 자바 스크립트
for (var i = 0; i < len; i++)
{
for (var j = 0, swapping, endIndex = len - i; j < endIndex; j++)
{
if (marksArr[j] > marksArr[j + 1])
{
//swap objects
/*(function() {
var k = 0,
action = function() {
document.getElementById(coursesKey[j]).style.top = (parseInt(document.getElementById(coursesKey[j]).style.top) + 1) + 'px';
document.getElementById(coursesKey[j + 1]).style.top = (parseInt(document.getElementById(coursesKey[j+1]).style.top) - 1) + 'px';
k++;
if (k < difMoves) {
setTimeout(action, 200);
}
};
setTimeout(action, 200);
})();*/
}
}
}
루프 대기 * 및 * 브라우저 다시 그리기가 불가능합니다. 차단 코드가있는 한 UI를 업데이트 할 수 없으며 차단하지 않으면 루프가 계속됩니다. 한 가지 간단한 방법은 모든 시각적 업데이트를 Array로 푸시 한 다음 루프가 완료된 후'setInterval()'또는'setTimeout()'을 사용하여 배열의 내용을 브라우저에 인쇄하는 것입니다. –
이 함수로 이동하는 방법을 말할 수 없으며 함수가 완료되면 for 루프를 계속 진행할 수 있습니까? – user2342875
'setTimeout'을 사용하지 않을 때. 당신이 설명하는 것은 루프를 막는 것입니다. 'setTimeout'없이 함수를 호출함으로써 그렇게 할 수 있지만, 루프가 완료 될 때까지 UI는 업데이트되지 않습니다. 당신이 원하는 것은 루프를 제자리에두고 UI가 당신이 만든 업데이트를 반영하도록하는 것입니다. JavaScript에서는 불가능합니다. –