我有一个订阅的主题,并在用户搜索时触发 .
let searchView;
this.searchSubject
.switchMap((view: any) => {
searchView = view;
this.http.post(this.url, view);
})
.subscribe(page => {
this.searchHistoryService.addRecentSearch(searchView).subscribe();
})
searchHistoryService.addRecentSearch记录此搜索,以便用户可以查看他们最近的搜索 .
我不认为这是好习惯,因为observable每次都订阅,我宁愿使用我正在调用.next()的主题,或者将历史调用与搜索调用本身结合起来 .
如果searchHistoryService.addRecentSearch返回一个Subject我可以调用.next()但我会在哪里订阅它?
我尝试在searchHistoryService的构造函数中添加它
this.searchHistorySubject.do(observableIWantToCall()).subscribe()
然后将订阅替换为'addRecentSearch':
this.searchHistoryService.searchHistorySubject.next(searchView)
但它不起作用 .
内部可观察,observableIWantToCall()被调用,但是oborderable返回并未订阅 .
这有什么不对,当另一个完成发射时订阅一个可观察的最佳做法是什么?
1 回答
我想你可以这样做: