这是我经常发现自己陷入的一种模式,我不知道为什么,或者什么是实现我目标的正确方式.
我需要一个number
的值,许多计算都依赖于它,但这个值需要从可观测对象中检索.
我在服务中使用了我的组件可以调用的GET方法,但我总是很难找到正确的模式来实现这一点.
我的服务方式:
getMarketCap(company: Company): number {
combineLatest([
this.getPrevDayClose(company.ticker),
this.getCurrDayLastPrice(company.ticker),
this.getWsLastPrice(company.ticker)
]).pipe(
tap(([prevDayClose, currDayLastPrice, wsLastPrice]) => {
if (wsLastPrice) {
this.price = wsLastPrice;
} else if (currDayLastPrice) {
this.price = currDayLastPrice;
} else {
this.price = prevDayClose;
}
return this.price * this.getSharesOutstanding(company);
})
);
}
这是行不通的,因为包含我想要的值的返回值在tap
以内.
我的组件是一个公司列表,我只需在ngOnInit()
中 for each 公司调用this.service.getMarketCap(company)
.有没有一种简单的方法可以在设置后将this.price
的值提取出来,以便被服务中的其他计算方法消费?
我以前用组件方法做过类似的事情,但我能够在组件级别设置变量,因为它一次只为一家公司设置.
服务是不是不适合这个逻辑?