возвращаем BehaviorSubject после получения Observable от обслуживающего персонала - PullRequest
0 голосов
/ 29 апреля 2018
  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 Ответ

0 голосов
/ 29 апреля 2018

метод this.search (query) .subscribe (...) возвращает подписку, в то время как вы должны возвращать BehaviorSubject. вторичные вы не должны ничего возвращать из подписки на события. Вы должны создать новый BehaviorSubject и вернуть его из метода getWatchlist (), а в событии подписки вы должны установить BehaviorSubject методом next ().

...