티스토리 뷰
$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
- Java
- 접속형태
- 호이스팅
- 컴퓨터 시스템 구성요소
- useeffet
- 네트워크 접속장치
- 중첩스코프
- 자료처리시스템
- 프로그래머스
- 자료구조
- replaceAll
- startsWith()
- 운영체제
- 블록스코프
- SQLD
- 엑셀 파일 추출
- StringBuilder
- 스코프
- 운영체제 유형
- fsd 아키텍처
- 콜백 큐
- fsd 구조
- SQL 개발자
- 범용리스트
- 운영체제 특징
- 구성형태
- 온라인처리
- 네트워크
- 대소문자 변환
- Replace
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함