当我订阅我的 Observable 时,我的下一个不工作

when i subscribe my Observable, my next is not working

myObservable():Observable<boolean>{
  const result = new Subject<boolean>();
  result.next(true);
  result.complete();
  return result.asObservable();
}

this.myObservable().subscribe(x=> console.log(x));

当我订阅我的 Observable 时,函数名称是 myObservable 但控制台永远无法工作

this.myObservable().subscribe({
next: _response => {console.log('next');}
        error: error => {
            console.log('had an error');
       },
       complete: () => {
           console.log('complete');
           this.accountDataLoaded = true;
       }})

试试生命周期控制台 完整的是打印但下一个不是

代码确实:

  • 创建 Observable
  • 发出一个值:true
  • 完成Observable
  • return Observable
  • 订阅 Observable
  • 的下一个值

当然,不会发出新值。这就是永远不会执行回调的原因。

例如,如果您想在订阅后发出值,可以使用超时:

function myObservable():Observable<boolean>{
  const result = new Subject<boolean>();
  setTimeout(() => {
    result.next(true);
    result.complete();
  }, 1000)
  return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));

但是,当您创建 Subject 时,您还可以使用 ReplaySubject 向新订阅者发送旧值

function myObservable():Observable<boolean>{
  const result = new ReplaySubject<boolean>();
  result.next(true);
  result.complete();
  return result.asObservable();
}

this.myObservable().subscribe(x=> console.log(x));