【发布时间】:2019-05-03 13:24:03
【问题描述】:
我正在创建一个带有链接子任务对象的工作项对象。我的函数 (createWorkItemAndChildren) 有两个参数,workItem 和一个 Task 对象数组。我希望我的函数返回一个包含所有创建的 ID(工作项和任务)的数组。
我必须从一个 http POST 调用 (workItemService.createWorkItem) 中获取父 ID,然后才能创建在同一服务上使用另一个 http POST 方法的子任务。
我现在在 createChildWorkItems 中有 forkJoin 一次返回所有子 ID。
我如何重构它以便只有一个订阅,并一起返回包含父 ID 和子 ID 的数组?
createChildWorkItems(parentId, tasks: Task[]): Observable<any> {
return <Observable<number>> forkJoin(
tasks.map(task => <Observable<number>> this.workItemService.createChildWorkItem(parentId, task))
).pipe(zip());
}
createWorkItemAndChildren(workItem, childTasksToSave: Task[]){
var resultArray = [];
this.workItemService.createWorkItem(workItem).subscribe(workItemId => {
var parentId = workItemId;
resultArray.push(parentId);
if (parentId !== null){
this.createChildWorkItems(parentId, childTasksToSave).subscribe((results: number) => {
resultArray.push(results);
this.tfsIdsCreated = resultArray;
});
}
});
}
【问题讨论】:
标签: angular loops rxjs observable