Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mendapatkan Nilai Semasa Yang Boleh Diperhatikan atau Subjek?

Bagaimana untuk Mendapatkan Nilai Semasa Yang Boleh Diperhatikan atau Subjek?

DDD
DDDasal
2024-11-03 13:54:031062semak imbas

How to Retrieve the Current Value of an Observable or Subject?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn