我正在构建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()方法
答案 0 :(得分:2)
complete
仅在Observable完成发射项目时调用。 IOW,这是来自非错误Observable的最后一个事件。
如果您仅对此Observable中的单个项目感兴趣,则可以:
authenticationState.first().subscribe();
这样,complete
将在发出的单个项之后被调用。
答案 1 :(得分:1)
我认为,当您准备好调用订阅的完整部分时,您可以像这样触发完成。
authenticationState.complete();