3 回答

TA貢獻1780條經(jīng)驗 獲得超4個贊
像這樣的東西應該使用 switchMap 運算符
this.projectService.addProject(newProject).pipe(
tap(data => newProjectFromServer = data),
switchMap(() => {
return this.projectService.addEmployeesToProject(
newProjectFromServer.id,
newProject.assignedEmployees
)}
).subscribe((secondResult) => {
this.afterSubmit()
});
我希望它有所幫助。
有關 switchMap 運算符的研究鏈接:
https://www.learnrxjs.io/learn-rxjs/operators/transformation/switchmap

TA貢獻1911條經(jīng)驗 獲得超7個贊
您可以使用concatMap、switchMap、mergeMap。建議使用concatMap,因為它可以確保 HTTP 調(diào)用的順序執(zhí)行。
this.projectService.addProject(newProject).pipe(
concatMap((newProjectFromServer) => {
this.projectService.addEmployeesToProject(
newProjectFromServer.id,
newProject.assignedEmployees
)}
).subscribe((secondResult) => {
this.afterSubmit()
});

TA貢獻1801條經(jīng)驗 獲得超8個贊
我認為更好的方法是將其轉換為承諾:
public async myFunc(): Promise<void> {
const newProjectFromServer = await this.projectService.addProject(newProject).toPromise()
await this.projectService
.addEmployeesToProject(
newProjectFromServer.id,
newProject.assignedEmployees
).toPromise();
this.afterSubmit();
}
添加回答
舉報