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));
    });
  });
}