【发布时间】:2017-07-29 00:28:42
【问题描述】:
我有一个简单的应用程序,它基于城市列表,每隔 X 秒从服务中检索一些天气信息,然后显示信息。
我正在使用 Angular 4 和 ngrx 来实现这一点,并且我已经让它工作了,但我想将一些东西重构为更具反应性的东西。
所以这是我要更改的一段代码:
@Effect()
weather$: Observable<Action> = this.actions$
.ofType(LOAD_WEATHER_ACTION)
.switchMap(() => {
const cityObservables = this.cities.map(city =>
this.service.getWeatherByCityId(city.id, city.name)
);
return Observable.merge(...cityObservables);
})
.map(weather => new CityWeatherLoadedAction(weather));
所以这里的语法并不那么重要。这样做的目的是,每次我得到一个 LOAD_WEATHER_ACTION 类型的动作时,我都会创建一个可观察对象列表,为每个我想要获取数据的城市创建一个列表,然后我使用合并将它们全部组合起来,我使用 switchMap 来将初始的可观察流替换为新的。
一切都好,但是如果我的城市列表不是一个简单的数组,而是另一个可观察的呢?我该怎么做?
谢谢!
【问题讨论】: