【发布时间】:2018-11-09 09:21:49
【问题描述】:
我正在尝试合并 3 个不同的 observables 并将它们标识为源值。此外,我在 withLatestfrom 中获取了 userDetails,以便我可以根据触发的 observable 进行操作(用户名 - u,密码 - p,年龄 - a)。我确信我将地图函数放在 Observable.merge 中这一事实有问题,这就是为什么无论哪个 Observable 应该触发我的源在“switch case”语句中总是'u'。
@Effect
public test = Observable.merge(
this.onUserNameUpdate().pipe(
map(() => 'u')),
this.onPasswordUpdate().pipe(
map(() => 'p')),
this.onAgeUpdate().pipe(map(() => 'a')))
.withLatestFrom(this.store.select(getUserDetails),
(source, userDetails) => ({
source,
order
})
)
.map((params) => {
switch (params.source) {
case 'u':
// do smth with username
case 'p':
// do smth with password
case 'a':
// do smth with age
}
return {
// some object
}
})
谁能解释我在这里做错了什么?
【问题讨论】:
-
你使用的是哪个版本的 Rxjs?你也在使用
rxjs-compat吗?我问的是因为你使用的是Observable.merge和.pipe,它们是来自两个不同版本的 Rxjs 的语法。 -
我正在使用 rxjs 5。我想我应该不使用 Observable.merge 吗?我没有使用 rxjs-compat。
-
如果您使用的是 Rxjs5,那么您应该无法使用
.pipe我猜。您的运营商 (map) 将直接链接到 Observable 值本身。 -
你能通过 Minimal StackBlitz 样本复制这个吗?
-
奇怪,我以为是其他方式...如果我错了,请纠正我。 blog.hackages.io/rxjs-5-5-piping-all-the-things-9d469d1b3f44
标签: javascript angular rxjs