티스토리 뷰
$digest already in progress
- angularJS에서 발생하는 오류, 이 오류는 $digest 루프가 이미 진행 중일 때 또 다른 $digest 루프가 시작되려고 할 때 발생하는 오류이다.
$digest
- angularjs 데이터 바인딩 시스템에서 모델이 변경될 때 이를 ui에 반영하기 위해 실행되는 프로세스
문제 원인
- 모델이 변경될 때 $digest 루프를 시작하여 뷰를 업데이트하는데 이 루프가 완료 되기 전에 또 다른 모델 변경이 발생하면 $digest already in progress 오류가 발생한다.
- $digest 또는 $apply를 수동으로 호출할 때 이 오류가 발생한다. 예를 들어 한 $digest가 진행 중일 때 또 다른 $digest나 $apply를 호출하면 충돌이 일어날 수 있다.
해결 방법
- setTimeout($timeout) 사용하기 setTimeout은 $digest 루프가 완료된 후에 코드가 실행되도록 보장한다.
setTimeout(() => {
$scope.apply(() => {
// 모델 변경
});
});
- $scope.$applyAsynce 사용하기 $applyAsync는 $digest 루프가 끝난 후에 처리를 예약해 오류를 방지한다.
$scope.applyAsync(() => {
// 모델 변경
});
angularJS에서 모델 변경을 처리할 때는 $digest가 진행 중인지 확인하고, 그에 맞게 적절한 방법을 선택해야한다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- startsWith()
- n 번째 원소부터
- SQL 개발자
- Object.clone()
- 프로그래머스 세로 읽기
- SQLD
- Java
- 배열만들기1
- 콜백 큐
- 문자열 반복하기
- 마진과 패딩의 차이점
- rep;ㅁce
- 신입개발자 면접 준비
- 브라우저의 기본 구조
- 블록스코프
- 호이스팅
- 배열 만들기3
- 렌더링 과정
- replace와 replaceAll의 차이점
- nodelist
- 엑셀 파일 추출
- replaceAll
- 대소문자 변환
- 스코프
- useeffet
- StringBuilder
- Replace
- 프로그래머스
- 중첩스코프
- 프로그래머스 qr code
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함