在其他服务完成后调用服务 Angular

Call service after other service finishes in Angular

我在 Angular 的组件上有以下内容:

notifier: Subscription;

ngOnInit() {

  this.authService.init();

  this.notifier = this.noteService.get().subscribe((note: Note) => { 

    if (note.code == 1) {
      this.authService.init();
    }

  });

}

在 authService.init() 结束从数据库中获取数据后,我需要调用:

this.noteService.send(2);  

authService如下:

export class AuthorizationService {

  private data$: Observable<Data[]>;

  init() {
    this.data$ = this.httpClient.get<Data[]>>(`auth/data`);
  }

}

我应该怎么做?

您应该使用 flatMap 来连接请求。

但首先我建议您像这样更改 AuthorizationService 中的 init() 方法:

export class AuthorizationService {

  private data$: Observable<Data[]>;

  init(): Observable<Data[]> {
    return this.httpClient.get<Data[]>>(`auth/data`);
  }

}

然后在你的组件中:

notifier: Subscription;

ngOnInit() {
      this.authService.init().pipe(flatMap(() => this.noteService.send(2))).subscribe(
        () => {
           // Success of this.noteService.send(2)
        }
     );

  });

}