在其他服务完成后调用服务 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)
}
);
});
}
我在 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)
}
);
});
}