각도 변경 및 템플릿 업데이트를 이해하려고합니다. 나는 사실 조금 혼란 스럽다.각도 변경 감지 및 비동기 기능 이해
버튼과 간단한 입력 필드가 있습니다. 버튼을 클릭하면 필자는 입력 필드의 값을 "테스트"로 변경합니다. 그런 다음 즉시 반환하는 비동기 함수를 만듭니다. 그런 다음 for 루프를 사용하여 약 4 초 동안 기다립니다 (테스트 용). 나는 무엇을 기대
- 이다 : 그것은 비동기 호출 때문에 입력 필드의 값은 즉시 "asynched"된다.
- 현실 : 입력 필드의 값은 4 초 후에 "asynched"가됩니다.
코드
updateField(){
this.textContentMain.title = "test"
this.asyncTestFunction();
for(var i=0;i<3999999999;i++){
}
}
asyncTestFunction() {
this._contentSalesTextConfigService.get(this.contentSalesTextConfig).subscribe(item => {
this.textContentMain.title = "asynced";
})
}
템플릿 여기
<button (click)="updateField()">Update</button>
<input [ngModel]="textContentMain.title" #titleAccessor="ngModel" name="title" id="title" type="text" >
내가 여기 틀릴 수도 있지만 사이클을 소화 : 당신이 장면 뒤에 중요한 일을 설명 할 수 이벤트 루프
시계이 최고의 비디오를 읽을 필요이를 위해
함수가 실행될 때까지는 실행되지 않을 것입니다. 동기 함수가 for 루프와 별개입니다. 왜 for 루프가 있는지 확실하지 않습니다. 제 생각에는 루프가 당신이 기다리고있는 것입니다. –
비동기 호출은 현재 컨텍스트의 모든 항목이 완료된 후에 만 항상 * 해결됩니다. get이 "to-do list"에 추가되면 나머지 목록은 그 목록이 다음 항목을 확인하기 전에 실행됩니다. 이는 제목 값이 실제로 설정되면 예상대로 실행되는 Angular의 변경 감지와는 아무런 관련이 없습니다. – jonrsharpe
덕분에 많은 @jonrsharpe – rematnarab