Мне сложно понять, как все работает с наблюдаемыми.Я разрабатываю API, который получает «Person», у которого будет несколько свойств и два «Parent».Я извлекаю эти объекты с помощью модуля mssql, который возвращает наблюдаемые.Моя проблема в том, что когда я получаю Observable, я не могу получить объект «Parent» для заполнения «Person» (как я получаю другой Observable), который возвращает моя функция.
IЯ понял, что оператор карты позволяет мне редактировать выдаваемое значение, заполняя поля родителей с помощью идентификатора человека.Но кажется, что два Observable не могут быть подписаны в операторе карты: моя функция возвращает Observable, не дожидаясь заполнения родителей.
return this.SQLService.GetPerson().pipe(
map((p: any): Person => {
// This fills the Person object from the db returned object
let returnValue = new Person(p);
this.SQLService.GetParent(returnValue.ID).pipe(
map((parentObj: any): Parent => { return new Parent(parentObj); })
).subscribe(
(parentInstance: Parent): void => {returnValue.Parent1 = parentInstance;}
);
return returnValue;
})
Исходя из синхронной разработки, я ожидаю, что мое returnValue будет фактическивернуть Person с полем Person.Parent1, содержащим родителя.В конце концов, я могу получить человека, но без поля Parent1.(и без сообщения об ошибке)