Как с помощью RxJS положить значение в переменную?
Есть функция:
getData (id: number, objectId: number): Observable<ObjectData | undefined> {
let res$;
if (!this.objectData.length) {
this.loadObjectData(id)
.subscribe((objectData) => {
res$ = objectData.find((i: ObjectData) => i.id === objectId);
},
);
} else {
res$ = this.objectData.find((i: ObjectData) => i.id === objectId);
}
return of(res$);
}
как мне сделать так, что при условии if (!this.objectData.length) функция дожидалась выполнения загрузки и помещала значения в переменную res$?
Ответы (1 шт):
Автор решения: Sergey Glazirin
→ Ссылка
Не нужно присваивать значение в переменную, а сразу верните Observable, а чтобы преобразовать данные используйте pipe и метод .map().
getData(id: number, objectId: number): Observable<ObjectData | undefined>{
if (!this.objectData.length) {
return this.loadObjectData(id).pipe(map((objectData) => objectData.find((i: ObjectData) => i.id === objectId)
))
} else {
return of(this.objectData.find((i: ObjectData) => i.id === objectId));
}
}
В таком случае, вам не нужно ждать, когда закончится подписка. А все ожидание будет уже там, где будет вызван метод getData