Angular 我如何在正确的时间(而不是以后)启动这个内部可观察程序来执行
您知道如何在正确的时间执行第二个,因为第一个可观察对象完成了它的工作并直接转到返回方法。之后,代码执行第二个可观察的,我想并行Angular 我如何在正确的时间(而不是以后)启动这个内部可观察程序来执行,angular,Angular,您知道如何在正确的时间执行第二个,因为第一个可观察对象完成了它的工作并直接转到返回方法。之后,代码执行第二个可观察的,我想并行 hasEditRechte(): Observable<boolean> { this.zugriffsrechte = []; this.getCurrentBenutzer().subscribe(result => { this.currentLoggedInBenutzer = result; t
hasEditRechte(): Observable<boolean> {
this.zugriffsrechte = [];
this.getCurrentBenutzer().subscribe(result => {
this.currentLoggedInBenutzer = result;
this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id).subscribe(benutzerDTO => {
this.zugriffsrechte = benutzerDTO.zugriffsrechte;
});
});
return of(this.rolleService.hasEditZugriffRechte(this.zugriffsrechte));
}
hasEditRechte():可观察{
this.zugriffsrechte=[];
this.getCurrentBenutzer().subscribe(结果=>{
this.currentLoggedInBenutzer=结果;
this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id).subscribe(benutzerDTO=>{
this.zugriffsrechte=benutzerDTO.zugriffsrechte;
});
});
返回(this.rolleService.hasEditZugriffRechte(this.zugriffsrechte));
}
**->这一个稍后出现,但我希望在返回之前已经得到这里的结果this.zugriffsresechte=benutzerDTO.zugriffsresechte** 我没有测试这段代码,但我认为应该使用switchMap或switchMapTo,并避免使用嵌套订阅
我没有测试这段代码,但我认为应该使用switchMap或switchMapTo,并避免使用嵌套订阅
从“rxjs/operators”导入{map,tap};从'rxjs/operators/switchMapTo'导入{switchMapTo};我添加了这些导入,但它显示:类型OperatorFunction.Subscribe上不存在属性Subscribe(benutzerDTO=>{”这是红线您的代码返回Subscription IntelliJ告诉我将返回对象从Observable更改为Subscription,然后就可以了。但我不认为这是我需要的。它应该返回Observable建议?我这样做是有承诺的,然后调用函数。然后(值=>{logic inside})hasEditZugriffRechte():Promise{返回this.getCurrentBenutzer().pipe(点击(结果=>this.currentLoggedInBenutzer=result),switchMapTo(this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id)).toPromise()。然后((值:BenutzerRolleDTO)=>this.rolleService.hasEditRechte(value.zugriffsrechte));}您的上一个想法不正确,因为第二个“点击”是如何连接的?没有点,如果我放置点仍然不起作用。导入{map,点击}从'rxjs/operators';导入{switchMapTo}从'rxjs/operators/switchMapTo';我添加了这些导入,但它显示:类型OperatorFunction.Subscribe上不存在属性Subscribe(benutzerDTO=>{”这是红线您的代码返回Subscription IntelliJ告诉我将返回对象从Observable更改为Subscription,然后就可以了。但我不认为这是我需要的。它应该返回Observable建议?我这样做是有承诺的,然后调用函数。然后(值=>{logic inside})hasEditZugriffRechte():Promise{返回this.getCurrentBenutzer().pipe(点击(结果=>this.currentLoggedInBenutzer=result),switchMapTo(this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id)).toPromise()。然后((值:BenutzerRolleDTO)=>this.rolleService.hasEditRechte(value.zugriffsrechte));}您的上一个想法不正确,因为第二次“点击”它是如何连接的?没有点,如果我把点放进去,它仍然不起作用。
hasEditRechte(): Observable<boolean> {
this.zugriffsrechte = [];
return this.getCurrentBenutzer().pipe(
tap(result => this.currentLoggedInBenutzer = result),
switchMapTo(this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id)))
.subscribe(benutzerDTO => {
this.zugriffsrechte = benutzerDTO.zugriffsrechte;
return of(this.rolleService.hasEditZugriffRechte(this.zugriffsrechte));
});
});
}
hasEditRechte(): Observable<boolean> {
this.zugriffsrechte = [];
return this.getCurrentBenutzer().pipe(
tap(result => this.currentLoggedInBenutzer = result),
switchMapTo(this.getBenutzerRolleDTO(this.currentLoggedInBenutzer.id)))
tap(benutzerDTO => this.zugriffsrechte = benutzerDTO.zugriffsrechte)
map(() => of(this.rolleService.hasEditZugriffRechte(this.zugriffsrechte));
});
});
}