RxJS中的管道和选择运算符

时间:2019-10-21 15:22:29

标签: rxjs ngrx

我想知道以下两个代码块的行为是否相同:

使用管道(来自原始ngrx sample):

pending$ = this.store.pipe(select(fromAuth.selectLoginPagePending));
error$ = this.store.pipe(select(fromAuth.selectLoginPageError));

没有一个:

pending$ = this.store.select(fromAuth.selectLoginPagePending);
error$ = this.store.select(fromAuth.selectLoginPageError);

我已经测试了两者,但没有发现任何明显的差异。

有想法吗?

2 个答案:

答案 0 :(得分:1)

是的,您是对的。两者

pending$ = this.store.pipe(select(fromAuth.selectLoginPagePending));
error$ = this.store.pipe(select(fromAuth.selectLoginPageError));

pending$ = this.store.select(fromAuth.selectLoginPagePending);
error$ = this.store.select(fromAuth.selectLoginPageError);

执行相同的功能,即获取存储状态的一部分,如selectors上的NgRX文档所述。

但是,pipe()实用程序允许您将选择器与RxJS pipeable operators链接,例如scan()filter(),从而可以执行其他操作,例如状态过渡。

答案 1 :(得分:1)

他们都做同样的事情。 在内部,store.select函数调用select运算符。