angular - 从服务器接收 Observable 后返回 BehaviorSubject
问题描述
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>>
不能分配给类型 ` 那么我该如何解决这个问题呢?
解决方案
this.search(query).subscribe(...) 方法返回一个订阅,而您必须返回一个 BehaviorSubject。其次,您不应该从订阅事件中返回任何内容。您必须实例化一个新的 BehaviorSubject 并从 getWatchlist() 方法返回它,并且在订阅事件中您应该通过 next() 方法设置 BehaviorSubject。
推荐阅读
- ios - Swift:使用块模式的 LZ4 解码
- c# - 使用用户修改 DropdownList MVC?
- javascript - 如果不是返回值而是抛出错误,TypeScript 会给出错误
- visual-studio - Visual Studio 2017 中不存在要启动的 D 程序
- linux - 如何在docker的RUN命令中执行两个命令?
- python - 根据其他列值标记行
- android - 设置 WhatsApp 贴纸的应用程序有问题
- c++ - 使用 Ardunio 从 RFID 卡中检索信息
- javascript - 为什么在 react js 制作日期选择器中没有导入 css?
- r - R:了解省略号 (...) 如何在嵌套函数中工作,以及它如何不工作