Mendapatkan Nilai Semasa Boleh Diperhatikan atau Subjek
Siasatan ini berkaitan dengan cabaran untuk mengekstrak nilai semasa daripada Boleh Diperhatikan atau Subjek. Dalam kes Observables, tujuan mereka adalah untuk menolak nilai kepada pelanggan semasa ketibaan mereka. Setelah dipancarkan, Observable melupuskan nilai. Oleh itu, mengakses nilai semasa Observable secara langsung tidak boleh dilaksanakan.
Nilai Semasa Subjek
Subjek, berbeza dengan Observables, mengekalkan tanggapan yang dikeluarkan terkini nilai. Walau bagaimanapun, nilai ini sememangnya tidak boleh diakses di luar Subjek itu sendiri.
Menggunakan BehaviorSubject
Penyelesaian kepada dilema ini ialah penggunaan BehaviorSubject. Ia beroperasi seperti Subjek, namun ia memberikan peningkatan yang ketara: ia menyimpan nilai yang dipancarkan terakhir dan menjadikannya tersedia serta-merta kepada pelanggan baharu. Selain itu, ia menawarkan kaedah getValue() untuk mendapatkan semula nilai semasa secara eksplisit.
Dengan menggabungkan BehaviorSubject dalam perkhidmatan Angular yang disediakan, anda boleh mencapai kefungsian yang diingini:
<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject'; @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); }); } getCurrentValue(): boolean { return this._isLoggedInSource.getValue(); // Access the current value using `getValue()` } }</code>
Pengubahsuaian ini membolehkan anda untuk mendapatkan semula nilai terkini isLoggedIn menggunakan getCurrentValue(). Anda kemudiannya boleh memanfaatkan nilai ini tanpa memerlukan langganan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Semasa Yang Boleh Diperhatikan atau Subjek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!