RxJS-BehaviorSubject,onComplete未调用

时间:2019-05-15 09:58:32

标签: angular typescript rxjs behaviorsubject

我正在构建Angular 7应用程序,并使用BehaviorSubject保持互联网上每个来源所建议的用户身份验证状态。

由于BehaviorSubject是可观察的,为什么我不能触发onComplete()方法?

这是代码(对我来说,这似乎很经典):

authenticationState = new BehaviorSubject(false);

authService

this.authService.authenticationState.subscribe(state => {
      this.isLoggedIn = state;
      this.authService.authenticationState.complete();
    },
    err => console.log(err),
    () => console.log('complete')
    );

“完成”未记录。我在做错什么吗?

解决方案

UIKeyboardEventArgs

然后触发complete()方法

2 个答案:

答案 0 :(得分:2)

complete仅在Observable完成发射项目时调用。 IOW,这是来自非错误Observable的最后一个事件。

如果您仅对此Observable中的单个项目感兴趣,则可以:

authenticationState.first().subscribe();

这样,complete将在发出的单个项之后被调用。

答案 1 :(得分:1)

我认为,当您准备好调用订阅的完整部分时,您可以像这样触发完成。

authenticationState.complete();