반응형
가입자가 관찰 가능한 오류에 대해 중지하지 않아야 함
나는 자동적으로 오류에 대한 구독을 취소하는 구독자와 싸우고 있다.
observable
.subscribe(
(data) => {
// some logic encountering an error during execution
// comparable to throw new Error()
}
)
Try/catch 사용으로 예방할 수 있다.
observable
.subscribe(
(data) => try {
// some logic encountering an error during execution
// comparable to throw new Error()
} catch(e) {
}
)
하지만 주변에서 일하는 것 같은 느낌이야.
Subscriber 및 SafeSubscriber의 출처를 검색해 보았으며, 이 출처는 오류 시 자동으로 구독 취소를 호출한다.
private __tryOrUnsub(fn: Function, value?: any): void {
try {
fn.call(this._context, value);
} catch (err) {
this.unsubscribe();
throw err;
}
}
이러한 행동을 방지하는 유일한 방법은 자체 구독자를 구현하는 것인가 아니면 시도/채택을 사용하는 것인가?
그것은 올바른 행동이다.당신은 그것을 사용할 수 있다.catch()
운영자는 동일한 출처에 다시 서명할 수 있다. 관찰 가능(또는 오류 시 다른 출처를 구독할 수 있음).
source
.catch(err => Observable.of(null))
.subscribe(...);
이것은 그냥 돌아올 것이다.null
에서next
원래 오류 대신 처리기.
가입자가 없는 경우 예외는 다시 발생한다는 점에 유의하십시오.error
핸들러
예를 들어, 오류를 발생시키지 않기 위해 다음을 수행하십시오.
source
...
.subscribe(..., error => {});
그러나 이것은 관찰 가능성의 기본 원칙 중 하나이기 때문에 이것은 항상 체인을 거부한다.0 또는 그 이상을 방출한다.next
알림 및 하나complete
또는error
통지는 하지만 둘 다 하지 않는다.
구독을 취소하고 싶지 않은 곳에서 어떤 문제를 해결하려고 하는지 알 수 없고, 때로는 사용할 수 있다.Subject
통과만 하면 된다.next
알림 및 나머지 알림 무시...:
const subject = new Subject();
source.subscribe(val => subject.next(val));
subject.subscribe(...);
참조URL: https://stackoverflow.com/questions/44986873/subscriber-should-not-stop-on-error-in-observable
반응형
'Programing' 카테고리의 다른 글
Vuex 재사용 가능한 모듈 패턴상태가 작동하지 않는 경우 기능 사용 (0) | 2022.03.23 |
---|---|
텍스트 파일에 유니코드 텍스트를 쓰는 중? (0) | 2022.03.23 |
Vue 라우터에서 이러한 유형의 경로 이중화를 방지하는 방법 (0) | 2022.03.22 |
경로 접두사가 없는 Vue 중첩된 동적 경로 (0) | 2022.03.22 |
Python 애플리케이션을 위한 가장 좋은 프로젝트 구조는 무엇인가? (0) | 2022.03.22 |