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

Bagaimana untuk Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan dalam Sudut?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 00:14:30818semak imbas

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

Mendapatkan Nilai Semasa Subjek RxJS atau Observable

Dalam aplikasi Angular, observable biasanya digunakan untuk menstrim data antara komponen dan perkhidmatan. Soalan biasa yang timbul ialah bagaimana untuk mendapatkan semula nilai semasa yang boleh diperhatikan tanpa melanggannya.

Dalam kod yang disediakan, perkhidmatan SessionStorage menggunakan Subjek bernama _isLoggedInSource untuk mengeluarkan keadaan log masuk semasa. Walaupun sifat isLoggedIn mendedahkan yang boleh diperhatikan ini, ia tidak mempunyai konsep nilai semasa.

Penyelesaian: Menggunakan BehaviorSubject

Penyelesaian kepada masalah ini terletak pada penggunaan BehaviorSubject dan bukannya Subjek. BehaviorSubject menjejaki nilai yang dikeluarkan terbaharu dan memancarkannya serta-merta kepada pelanggan baharu.

<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject';

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new BehaviorSubject<boolean>(false);
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}</code>

Kini, anda boleh mendapatkan semula keadaan log masuk semasa menggunakan kaedah getValue() BehaviorSubject:

<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>

Kesimpulan

Dengan menggunakan BehaviorSubject, anda boleh mengakses nilai semasa yang boleh diperhatikan walaupun tanpa melanggannya. Ini amat berguna apabila anda perlu membaca nilai yang dikeluarkan terkini pada titik tertentu dalam kod anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan dalam Sudut?. 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