RxJS6 asObservable()이 주제에 필요한가?
언제인가asObservable()
대상(예: 행동 대상)에 해당 대상을 관찰할 수 있는 권한이 필요한가?그 주제는 또한 관찰할 수 있는 것에 던져질 수 있다.
문의사항
- 사이의 기술적 차이점은 무엇인가?
name1$
그리고name2$
? - 어느 것을 사용해야 하는가(어느 것
name1$
또는name2$
)?
코드 샘플
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs';
export class Person {
private nameSubject: BehaviorSubject<string> = new BehaviorSubject<string>('lorem');
public get name1$(): Observable<string> {
return this.nameSubject.asObservable();
}
public get name2$(): Observable<string> {
return this.nameSubject;
}
public setName(value: string): void {
this.nameSubject.next(value);
}
}
미리 대답해줘서 고마워!
일반적으로 사용하는 것이 좋다.asObservable()
JavaScript에서 RxJS를 사용하는 경우에만.TypeScript를 사용하면 타이프 캐스팅만 사용할 수 있으며, 전화를 걸 수 없음next()
등등.
private nameSubject: BehaviorSubject<string> = new BehaviorSubject<string>('lorem');
public nameSubject$: Observable<string> = this.nameSubject;
이것은 형식 스크립트에서 피사체를 관찰 가능으로 전환하는 공식 권장 방법이다.
자세한 내용은 https://github.com/ReactiveX/rxjs/pull/2408#issuecomment-282077506을 참조하십시오.
asObservable()
새로운 관찰 가능을 창조하여Subject
, 그래서 랩으로 감싼 관찰 가능하지 않다.next()
방법뿐 아니라complete()
그리고error()
반환된 객체가 그 유형에 의해 제한되지 않는 자바스크립트에서는 더 이치에 맞는다고 생각한다.그러나 TypeScript에서는 유형을 좁히는 것만으로 이러한 방법을 숨길 수 있다. 대부분의 경우 충분할 것이다.그냥 그렇게 말해.Observable
반환된 API의 사용자는 API의 사용자인 것을 알지 못함Subject
; 물론 로 다시 캐스팅할 수 있다.Subject
그러나 API는 그렇게 사용되어서는 안 된다.
참고 항목:rxjs에서 asObservable()을 언제 사용해야 하는가?
와는 큰 차이가 없다.asObservable()
주로 관찰자 방법에 대한 접근을 차단한다.complete
,next
,error
당신이 실수로 그들에게 전화하는 것을 막기 위해서.
const a = new Subject();
console.log(a.asObservable().next)
// undefined
돌아오는 것이 좋다asObservable()
관찰자로 특정 스트림을 사용하지 않을 경우 안전한 편에 설 것
참조URL: https://stackoverflow.com/questions/59100900/rxjs6-asobservable-needed-on-a-subject
'programing' 카테고리의 다른 글
여러 경로를 한 번에 보여주는 리액트라우터 v4 (0) | 2022.04.09 |
---|---|
Vue.js에서 동적으로 데이터 바인딩된 텍스트 (0) | 2022.04.09 |
vue 2 라우터에 html "partial" 템플릿(js에 포함되지 않음)을 포함할 수 있는가? (0) | 2022.04.09 |
Python: 유니코드로 이스케이프된 문자열에서 .format() 사용 (0) | 2022.04.09 |
인덱스로 라우터 리디렉션 응답 (0) | 2022.04.09 |