Возвращаем 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().

Другие вопросы по тегам