RxJS Subject 또는 Observable의 현재 값 가져오기
Angular 애플리케이션에서는 데이터 공유 및 통신을 위해 Subject 또는 Observable을 사용하는 것이 일반적입니다. 그러나 변수와 달리 대상 및 관찰 가능 항목은 본질적으로 현재 값을 보유하지 않습니다. 값을 내보내면 즉시 구독자에게 전달되고 Observable은 작업을 완료합니다.
시나리오:
다음을 나타내는 Angular 서비스에 isLoggedIn 제목이 있다고 가정합니다. 사용자의 로그인 상태. isLoggedIn 관찰 가능 항목을 구독하지 않고 다른 구성 요소가 현재 로그인 상태를 검색하기를 원합니다.
해결 방법:
이 문제를 해결하기 위해 RxJS는 특별히 설계된 BehaviorSubject를 제공합니다. 현재 값을 제공합니다. 주제 및 관찰 가능 항목과 달리 BehaviorSubject는 마지막으로 내보낸 값을 기억하고 새로 구독한 관찰자에게 즉시 내보냅니다.
구현:
BehaviorSubject를 활용하려면 SessionStorage 서비스는 다음과 같습니다.
@Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new BehaviorSubject<boolean>(false); // Initialize with a default value isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } }
구성 요소에서 BehaviorSubject의 getValue() 메서드를 사용하여 현재 로그인 상태를 검색할 수 있습니다.
import {SessionStorage} from 'app/services/session-storage.service'; ... const sessionStorage = new SessionStorage(); const isLoggedIn = sessionStorage.isLoggedInSource.getValue();
BehaviorSubject를 사용하면 다음과 같은 이점을 얻을 수 있습니다. 구독에 의존하지 않고 isLoggedIn 주제의 현재 값을 얻는 메커니즘으로, 애플리케이션 설계 및 데이터 처리에 더 큰 유연성을 제공합니다.
위 내용은 RxJS 주제 또는 Angular에서 관찰 가능 항목의 현재 값을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!