Как использовать оператор фильтрации в rxjs?

  • 25 августа 2023 г. 13:17
Ответы на вопрос 1
В операторе `pipe()` нужно передавать все операторы, которые вы хотите применить к потоку данных. Вы можете передать параметры в операторы с помощью аргументов функции внутри них. Вот как это может выглядеть в псевдокоде:

```typescript
import { pipe, filter, map } from 'rxjs';

function discardOddDoubleEven() {
  return pipe(
    filter((v) => !(v % 2)),
    map((v) => v + v)
  );
}
```

Использование этого оператора будет выглядеть так:

```typescript
this.productsService
  .findAll()
  .pipe(discardOddDoubleEven())
  .subscribe((data: ProductInterface[]) => (this.products = data));
```

Вы также можете использовать операторы `filter`, `map` и `include` непосредственно в функции `pipe()`, без создания отдельной функции для оператора:

```typescript
import { pipe, filter, map } from 'rxjs';

this.productsService
  .findAll()
  .pipe(
    filter((product) => product.name.toLocaleLowerCase().includes('deepcool')),
    map((product) => ({ name: product.name, price: product.price * 2 }))
  )
  .subscribe((data: ProductInterface[]) => (this.products = data));
```

Обратите внимание, что операторы `filter`, `map` и `include` не являются стандартными операторами RxJS. Они могут быть определены в вашем коде или добавлены из других пакетов.
Похожие вопросы