我正在创建一个带有链接子任务对象的工作项对象。我的函数(createWorkItemAndChildren)接受两个参数,workItem和Task对象的数组。我希望我的函数返回所有创建的ID数组(工作项和任务)。
在进行第一次http POST调用(workItemService.createWorkItem)时,我必须从父级ID获取回复,然后才能使用相同服务上的另一个http POST方法创建子任务。
现在,在createChildWorkItems中使用forkJoin同时返回所有子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;
});
}
});
}