Я создаю объект Work Item со связанными дочерними объектами Task. Моя функция (createWorkItemAndChildren) принимает два параметра: workItem и массив объектов Task. Я хочу, чтобы моя функция возвращала массив всех идентификаторов, которые были созданы (рабочий элемент и задачи).
Мне нужно вернуть родительский идентификатор из одного вызова http POST (workItemService.createWorkItem), прежде чем я смогу затем создать дочерние задачи, которые используют другой метод http POST в той же службе.
Теперь у меня есть forkJoin в createChildWorkItems, возвращающий все дочерние идентификаторы одновременно.
Как мне изменить его так, чтобы была только одна подписка, и чтобы возвращать массив с родительским и дочерним идентификаторами вместе?
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;
});
}
});
}