Труба и выбор операторов в RxJS - PullRequest
0 голосов
/ 21 октября 2019

Мне интересно, одинаково ли ведут себя следующие два блока кода:

С конвейером (из оригинального 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 ]

1 голос
/ 21 октября 2019

Они оба делают одно и то же. Внутри функция store.select вызывает оператор select.

1 голос
/ 21 октября 2019

Да, вы правы. И

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);

выполняют одну и ту же функцию, которая заключается в получении среза состояния хранилища, как описано в документации NgRX для селекторов .

Однако утилита pipe() позволяет связывать селектор с конвейерными операторами RxJS , такими как scan() и filter(), что позволяет выполнять другие операции. такие как переходы между состояниями.

...