을 달성 어떤 방법이 있는지 나는 것으로 나타났습니다 이유를 개념화하는 문제를 가진 것 같아 'for'루프를 사용하여 배열을 처리하여 dom을 정지시키고 다시 렌더링하지 못하게합니다. 이 문제를 해결하기 위해 'setTimeout'호출을 사용했습니다. 이것은 해킹처럼 보이지만이 문제에 반대하는 다른 누군가를 도울 것입니다. 더 많은 답변을 감사. 나를 에릭 구안 덕분에 나를이 길로 가게했다. 여기 또 다른 게시물에 대한 답을 발견 ->How to stop intense Javascript loop from freezing the browser
var self = this;
var animals = ['dog', 'cat','lion','tiger','bear'];
var processing = function() {
var animal = animals.shift();
console.log(animal);
if (animals.length > 0) {
console.log(animals.length);
var timer = setTimeout(processing, 1000);
self.$store.commit('updateStatus', {progress : animals.length*20, msg: 'Progress Bar Test', status: 'processing', display: true});
} else {
console.log('clearing timeout');
self.$store.commit('updateStatus', {progress : 100, msg: 'Progress Bar Test', status: 'processing', display: false});
clearTimeout(timer);
}
}
processing();
당신의 돌연변이 동기, 그래서 당신은 진행 상태를 업데이트하고, 비록 UI 당신의 돌연변이가 완료 될 때까지 업데이트 할 수 없기 때문에 가능성이 높습니다. UI 업데이트를 위해 업데이트를 "청크 (chunk)"해야합니다. 일반적으로 X 반복 횟수 후에 setTimeout을 0으로 설정합니다. 또한 업데이트가 너무 빨리 발생하여 시각적으로 볼 수 있기 때문일 수 있습니까? –
이것은 주로 내가 찾은 것에 맞습니다. 나는 배열 요소를 처리 할 때 DOM을 '고정'하지 않기 위해 setTimeout을 사용했습니다. 아래에 답변을 추가하겠습니다. –