Angular 2 - 구독에서 서버 오류 확인
나는 이 시나리오가 Angular 2 문서에 있어야 한다고 생각하지만, 어디에서도 찾을 수 없습니다.
시나리오는 다음과 같습니다.
- 서버에서 유효하지 않은 양식 제출(개체 만들기)
- 서버가 양식에 표시되는 오류와 함께 400개의 잘못된 요청을 반환합니다.
- 구독이 돌아온 후 오류 변수 같은 것을 확인하고 싶습니다(예: 오류가 없으면 > 새로 만든 상세 페이지로 이동).
저는 이것이 다음과 같이 작동한다고 생각합니다.
this.projectService.create(project)
.subscribe(
result => console.log(result),
error => {
this.errors = error
}
);
}
if (!this.errors) {
//route to new page
}
저는 Angular 2가 매우 생소하기 때문에 관찰 가능한 기능에 대한 이해가 부족했기 때문일 수 있습니다.양식에 해당 데이터를 표시하는 데는 문제가 없지만 ts 구성 요소 내에서 데이터를 보는 방법을 알 수 없습니다.저는 정말로 http create의 성공/실패를 확인하고 싶습니다.
관련 RxJS 문서에 명시된 대로, 메소드는 오류가 없는 경우 완료 시 호출되는 세 번째 인수를 취할 수 있습니다.
참조용:
[onNext]
(Function
): 관찰 가능한 시퀀스의 각 요소에 대해 호출하는 함수입니다.[onError]
(Function
): 관찰 가능한 시퀀스가 예외적으로 종료될 때 호출하는 함수입니다.[onCompleted]
(Function
): 관찰 가능한 시퀀스의 정상 종료 시 호출하는 기능.
그러므로 당신은 당신의 라우팅 로직을 처리할 수 있습니다.onCompleted
정상 종료 시 호출되므로 콜백합니다(호출 시 오류가 발생하지 않음을 의미).
this.httpService.makeRequest()
.subscribe(
result => {
// Handle result
console.log(result)
},
error => {
this.errors = error;
},
() => {
// 'onCompleted' callback.
// No errors, route to new page here
}
);
참고로, 통화의 성공/실패에 관계없이 완료 시 호출되는 방법도 있습니다.이는 결과에 관계없이 HTTP 요청 후 항상 특정 논리를 실행하려는 시나리오(예: 로깅 목적 또는 모달 표시와 같은 일부 UI 상호 작용)에서 유용할 수 있습니다.
Rx.Observable.prototype.finally(action)
소스 관찰 가능 시퀀스가 정상적으로 종료되거나 예외적으로 종료된 후 지정된 작업을 호출합니다.
예를 들어, 다음은 기본적인 예입니다.
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/finally';
// ...
this.httpService.getRequest()
.finally(() => {
// Execute after graceful or exceptionally termination
console.log('Handle logging logic...');
})
.subscribe (
result => {
// Handle result
console.log(result)
},
error => {
this.errors = error;
},
() => {
// No errors, route to new page
}
);
콜백이 포함된 이전 구문은 6.4에서 더 이상 사용되지 않으며 8.0에서 제거될 예정입니다.대신에
of([1,2,3]).subscribe(
(v) => console.log(v),
(e) => console.error(e),
() => console.info('complete')
)
이제 사용해야 합니다.
of([1,2,3]).subscribe({
next: (v) => console.log(v),
error: (e) => console.error(e),
complete: () => console.info('complete')
})
https://https://devjs.dev/권장사항/https-messages
다음과 같은 방법으로 달성할 수 있습니다.
this.projectService.create(project)
.subscribe(
result => {
console.log(result);
},
error => {
console.log(error);
this.errors = error
}
);
}
if (!this.errors) {
//route to new page
}
rxjs way 2022 업데이트
this.projectService.create(project)
.subscribe({
next: (data)=>console.log('data',data),
error: (err)=>console.log('error',err),
complete:()=>console.log('complete')
});
언급URL : https://stackoverflow.com/questions/42104629/angular-2-checking-for-server-errors-from-subscribe
'source' 카테고리의 다른 글
함수가 있는 JavaScript 3차 연산자 예제 (0) | 2023.08.15 |
---|---|
Android - 보기 안에 어린이를 넣습니까? (0) | 2023.08.15 |
jQuery를 사용하여 요소 카운트 (0) | 2023.08.15 |
UIMainStoryboardFile 'Main'에 대한 기본 뷰 컨트롤러를 인스턴스화하지 못했습니다. 지정된 진입점이 설정되지 않은 것 같습니다. (0) | 2023.08.15 |
좋은 jQuery 드래그 앤 드롭 파일 업로드 플러그인이 있습니까? (0) | 2023.08.15 |