Angular 如何显示加载,直到下一个项目或错误到达可观察到?
现在我尝试使用Angular 如何显示加载,直到下一个项目或错误到达可观察到?,angular,rxjs,observable,Angular,Rxjs,Observable,现在我尝试使用可观察对象。用户可以作为另一个用户注销和登录,非常适合流。但是如何以及在何处实现我的this.loadingService.showLoading()和this.loadingService.hideLoading() 它不能在订阅中,因为这永远不会完成。而this.loginService.login(凭证)也会返回一个用户$-流 public user$: Observable<any> = this.loginService.user$; this.subscr
可观察对象
。用户可以作为另一个用户注销和登录,非常适合流。但是如何以及在何处实现我的this.loadingService.showLoading()
和this.loadingService.hideLoading()代码>
它不能在订阅中,因为这永远不会完成。而this.loginService.login(凭证)
也会返回一个用户$
-流
public user$: Observable<any> = this.loginService.user$;
this.subscription.add(this.user$.subscribe(value => {
this.user = value;
}, err => {
console.error('error in user stream', err);
}, () => {
console.error('impossible')
}));
userLoginHandle(credentials) {
this.loginService.login(credentials)
}
public user$:Observable=this.loginService.user$;
this.subscription.add(this.user$.subscripte)(值=>{
这个用户=值;
},err=>{
console.error('error in user stream',err);
}, () => {
console.error(“不可能”)
}));
userLoginHandle(凭据){
this.loginService.login(凭据)
}
您可以对用户对象实现setter
set user(value) {
if(value) {
this.loadingService.hideLoading();
}
}
可以对用户对象实现setter
set user(value) {
if(value) {
this.loadingService.hideLoading();
}
}
这个怎么样
this.subscription.add(this.user$.subscribe(value => {
this.loggingIn = false;
this.user = value;
}, err => {
this.loggingIn = false;
console.error('error in user stream', err);
}, () => {
console.error('impossible')
}));
userLoginHandle(credentials) {
this.loggingIn = true;
this.loginService.login(credentials)
}
这个怎么样
this.subscription.add(this.user$.subscribe(value => {
this.loggingIn = false;
this.user = value;
}, err => {
this.loggingIn = false;
console.error('error in user stream', err);
}, () => {
console.error('impossible')
}));
userLoginHandle(credentials) {
this.loggingIn = true;
this.loginService.login(credentials)
}
我不太明白你的问题,为什么不简单:this.loadingService.showLoading();this.subscription.add(this.user$.subscribe(value=>{this.user=value;this.loadingService.hideLoading();},err=>{console.error('error in user stream',err');this.loadingService.hideLoading();},()=>{console.error('canble'))代码>如果到达的用户没有调用loginService.login()
,那么hideLoading()
将不可能,因为从未调用过showLoading()
。用户可以到达而不抛出登录?@yonatanlling yes,在应用程序启动时,通过保存状态,因为用户可能不希望在每次启动应用程序时都登录。有了承诺,我只会做LoginService.login.then().catch()
,但通过观察,我正在努力找出实现东西的正确方法。我不太理解你的问题,为什么不简单:this.loadingService.showLoading();this.subscription.add(this.user$.subscribe(value=>{this.user=value;this.loadingService.hideLoading();},err=>{console.error('error in user stream',err');this.loadingService.hideLoading();},()=>{console.error('canble'))代码>如果到达的用户没有调用loginService.login()
,那么hideLoading()
将不可能,因为从未调用过showLoading()
。用户可以到达而不抛出登录?@yonatanlling yes,在应用程序启动时,通过保存状态,因为用户可能不希望在每次启动应用程序时都登录。有了承诺,我只会做LoginService.login.then().catch()
,但有了观察,我很难找到实现东西的正确方法。是的,这是一个可行的解决方案,但改用承诺,感觉更干净,代码更少。当然有办法做到这一点,但我真正想要的是一个干净的解决方案。但目前我决定不在任何地方使用可观察的,只在我认为有意义的地方使用。是的,这是一个有效的解决方案,但使用承诺,感觉更干净,代码更少。当然有办法做到这一点,但我真正想要的是一个干净的解决方案。但是现在我决定不在任何地方使用可观察的东西,只在我认为有意义的地方使用。