【发布时间】:2020-09-18 20:38:31
【问题描述】:
我需要从来自 ngrx 状态的几个可观察对象构建一个对象。
public readonly comibiedToOneObject$ = zip(
this.store$.select(selectObs1),
this.store$.select(selectObs2),
this.store$.select(selectObs3),
...
this.store$.select(selectObsN),
).pipe(
map(([
obs1,
obs2,
obs3,
...
obsN
]) => {
return {
obs1,
obs2,
obs3,
...
obsN
};
}),
);
我怎样才能使这段代码更易读、更好?
【问题讨论】:
-
您只需要该对象一次吗?或者商店中的所有值都发生了变化?
-
一次.....
-
那么我建议使用
forkJoin运算符。它有一种语法,您可以在其中传递具有 Observable 属性的对象,就像我在下面的回答中一样。但是您需要完成 observables,因此您必须在所有输入 observables 之后放置pipe(first())。如果你不想要这个,你可以使用我提到的库。
标签: angular rxjs javascript-objects ngrx