Observable 在定义 user.id 之后创建发射

Observable create emit after when user.id is defined

我无法在定义用户 ID 时发出它。这就是我所知道的,一旦你订阅了 observable,它就会监听变化并发出。是否有任何运算符可以在定义用户 ID 时发出。

我也尝试过使用 of 和新的 Observable 运算符,我得到了相同的输出。

  constructor() {
    setTimeout(() => {
      this.user.id = 1
      ,5000})
   }


   getUserIdChat(): Observable<any> {
      return Observable.create(data=> {
        console.log(" i called")
        if(typeof this.user.id != 'undefined') {
          console.log('next called')
          data.next(this.user.id);
          data.complete();
        }
      })
    }

constructor(private user: UserService) {
    this.user.getUserIdChat().subscribe(data => {
      console.log('data from user', data)
    })
   }

我应该在控制台中得到输出 1

像这样使用全局主题...

_userSubject = new Subject<any>();
constructor() {
        setTimeout(() => {
                this.user.id = 1;
                this._userSubject.next(this.user.id);
                this._userSubject.complete();
            },
            5000);



    getUserIdChat(): Observable<any> {
        return this._userSubject;
    }
}

创建一个主题。

userSubject = new Subject<number>();

 constructor() {
    setTimeout(() => {
      this.user.id = 1;
      this.userSubject.next(this.user.id)
      ,5000})
   }

   getUserIdChat(): Observable<any> {
      return userSubject.asObservable()
    }


constructor(private user: UserService) {
    this.user.getUserIdChat().subscribe(data => {
      console.log('data from user', data)
    })
   }