#rxjs
Вопрос:
Я извлечении объекта (реестр) из магазина (Акита), и исходя из того, что объекта не существует, либо я запрашиваю с сервера (моего if
) и, пройдя его вдоль или (мой else
) берет одну я получаю, выборка другой объект (манифест), делать синхронные операции на обоих из них, а затем передает результат вместе.
Я попытался просто вернуть объекты, а также вернуться of(the object)
, и ошибка та же: Type 'Observable<void>' is not assignable to type 'Observable<Roster>'. Type 'void' is not assignable to type 'Roster'
selectRoster(slug: string): Observable < Roster > {
const roster$ = this.selectEntity(slug).pipe(
map((roster: Roster) => {
if (!roster) {
this.rosterService.loadRoster(slug).pipe(
map((load: Roster) => {
return load
})
);
} else {
this.manifestQuery.selectEntity(roster.manifest.manifest_slug).pipe(
map((manifest: Manifest) => {
return this.rosterProcess.composeRegistry(roster, manifest)
})
);
}
})
)
return roster$
}
Я думал, что возвращение изнутри if/else
сработает, основываясь на моих исследованиях, но это вызывает жалобы.
Комментарии:
1. Что
rosterProcess.composeRegistry()
возвращается?2. Похоже, вы ничего не возвращаете оттуда
map((roster: Roster) => {....
. Так что, возможно, именно поэтому Typescript говорит вам, чтоroster$
этоobservable
void
ошибка .