programing

RxJS6 asObservable()이 주제에 필요한가?

prostudy 2022. 4. 9. 08:15
반응형

RxJS6 asObservable()이 주제에 필요한가?

언제인가asObservable()대상(예: 행동 대상)에 해당 대상을 관찰할 수 있는 권한이 필요한가?그 주제는 또한 관찰할 수 있는 것에 던져질 수 있다.

문의사항

  1. 사이의 기술적 차이점은 무엇인가?name1$그리고name2$?
  2. 어느 것을 사용해야 하는가(어느 것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

반응형