Возвращаем BehaviorSubject после получения Observable от обслуживающего персонала
getWatchlist(query: string): BehaviorSubject<IWatchlist> {
this.search(query)
.subscribe((searchResults: Observable<ISearchResults>) => {
const watchlist = formatSearchResults(searchResults);
this.watchlist$.next(watchlist);
});
return this.watchlist$;
}
я имею search
функция, которая делает HTTP-вызов и возвращает Observable
, Я называю это search
внутри другой функции, которая должна вернуть BehaviorSubject
, Как вы можете видеть последнюю строку return this.watchlist$;
не ждет search
функция, это просто возвращает BehaviorSubject
а потом просто обновляю watchlist$
, Я пытаюсь удалить эту последнюю строку и вернуть watchlist$
только когда я получаю результат search
функция. Я пытался сделать:
getWatchlist(query: string): BehaviorSubject<IWatchlist> {
return this.search(query)
.subscribe((searchResults: Observable<ISearchResults>) => {
const watchlist = formatSearchResults(searchResults);
this.watchlist$.next(watchlist);
return this.watchlist$;
});
}
но у меня есть ошибка: Type Observable<BehaviorSubject<IWatchlist>>
нельзя присвоить типу `так как я могу решить эту проблему?
1 ответ
Метод this.search(query).subscribe(...) возвращает подписку, в то время как вы должны возвращать BehaviorSubject. вторичный, вы не должны ничего возвращать из подписки на события. Вы должны создать новый BehaviorSubject и вернуть его из метода getWatchlist(), а в событии подписки вы должны установить BehaviorSubject методом next().