这实际上是对自己的注意,但它可能对其他人有用。
所以,这里有两段代码和我在gitter中的问题:
这两者有什么区别?:
@Effect()
loadRegistrationsFailed$: Observable<Action> = this.actions$
.ofType(registrations.LOAD_FAIL)
.pipe(
map(
action =>
new ShowErrorDialogAction({
correlationId: new Guid(),
title: "Server is unreachable",
message:
"Can't load user registrations. Can't connect to the server"
})
)
);
```
and
```
@Effect()
loadRegistrationsFailed$: Observable<Action> = this.actions$
.ofType(registrations.LOAD_FAIL)
.pipe(action =>
of(
new ShowErrorDialogAction({
correlationId: new Guid(),
title: "Server is unreachable",
message:
"Can't load user registrations. Can't connect to the server"
})
)
);
答案 0 :(得分:1)
感谢Brandt B.,答案是:
它与管道功能的工作方式有关。 pipe减少了传递给它的函数数组。在前一个值中,它执行map函数,该函数存储您在内部传递给映射的函数。在第二个例子中,它执行action =&gt;即时的,并作为管道的结果返回它。因此,整个observable的结果是(action)由效果库订阅,立即生成值
Dorus对同一个问题的回答:
这两个样本之间的区别在于第一个将映射值,其中第二个将只替换整个事物并忽略源发出的任何内容。
写第二个的正确方法是
keys 460* combine keys 45412*
由于你不使用动作,你也可以使用mergeMapTo或mepTo:
@Effect()
loadRegistrationsFailed$: Observable<Action> = this.actions$
.ofType(registrations.LOAD_FAIL)
.pipe(ob => ob.mergeMap(action =>
of(
new ShowErrorDialogAction({
correlationId: new Guid(),
title: "Server is unreachable",
message:
"Can't load user registrations. Can't connect to the server"
})
))
);
lettable运营商添加的唯一东西是你可以写.pipe(map())而不是.pipe(ob =&gt; ob.map())