RxJS - Operadores

Os operadores são uma parte importante do RxJS. Um operador é uma função pura que recebe observáveis ​​como entrada e a saída também é observável.

Trabalhando com Operadores

Um operador é uma função pura que recebe observável como entrada e a saída também é observável.

Para trabalhar com operadores, precisamos de um método pipe ().

Exemplo de uso de pipe ()

let obs = of(1,2,3); // an observable
obs.pipe(
   operator1(),
   operator2(),
   operator3(),
   operator3(),
)

No exemplo acima, criamos um observável usando of()método que leva os valores 1, 2 e 3. Agora, neste observável, você pode executar diferentes operações usando qualquer número de operadores usando o método pipe () conforme mostrado acima. A execução dos operadores continuará sequencialmente no observável dado.

Abaixo está um exemplo de trabalho -

import { of } from 'rxjs';
import { map, reduce, filter } from 'rxjs/operators';

let test1 = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
let case1 = test1.pipe(
   filter(x => x % 2 === 0),
   reduce((acc, one) => acc + one, 0)
)
case1.subscribe(x => console.log(x));

Resultado

30

No exemplo acima, usamos o operador de filtro que filtra os números pares e, a seguir, usamos reduce() operador que irá adicionar os valores pares e dar o resultado quando inscrito.

Aqui está uma lista de observáveis ​​que iremos discutir.

  • Creation
  • Mathematical
  • Join
  • Transformation
  • Filtering
  • Utility
  • Conditional
  • Multicasting
  • Manipulação de erros

Operadores de criação

A seguir estão os operadores que vamos discutir na categoria de operador de criação -

Sr. Não Operador e descrição
1 Ajax

Este operador fará uma solicitação ajax para o URL fornecido.

2 de

Este operador criará um observável a partir de uma matriz, um objeto semelhante a uma matriz, uma promessa, um objeto iterável ou um objeto semelhante a um observável.

3 fromEvent

Este operador dará saída como um observável que deve ser usado em elementos que emitem um evento, por exemplo, botões, cliques, etc.

4 fromEventPattern

Este operador criará um observável a partir da função de entrada que é usada para registrar manipuladores de eventos.

5 intervalo

Este operador criará um Observável para cada vez durante o tempo fornecido.

6 do

Este operador pegará os argumentos passados ​​e os converterá em observáveis.

7 alcance

Este operador criará um Observable que fornecerá uma sequência de números com base no intervalo fornecido.

8 throwError

Este operador criará um observável que notificará um erro.

9 cronômetro

Este operador criará um observável que emitirá o valor após o tempo limite e o valor continuará aumentando após cada chamada.

10 se

Este operador decidirá qual Observable será inscrito.

Operadores matemáticos

A seguir estão os operadores que vamos discutir na categoria Operador matemático -

Sr. Não Operador e descrição
1 Contagem

O operador count () obtém um Observable com valores e o converte em um Observable que fornecerá um único valor

2 Max

O método Max pegará um observável com todos os valores e retornará um observável com o valor máximo

3 Min

O método Min pegará um observável com todos os valores e retornará um observável com o valor mínimo.

4 Reduzir

No operador de redução, a função de acumulador é usada na entrada observável, e a função de acumulador retornará o valor acumulado na forma de um observável, com um valor semente opcional passado para a função de acumulador.

A função reduz () terá 2 argumentos, uma função acumuladora e, em seguida, o valor da semente.

Operadores de adesão

A seguir estão os operadores que discutiremos na categoria de operador Join.

Sr. Não Operador e descrição
1 concat

Este operador emitirá sequencialmente o Observable fornecido como entrada e prosseguirá para o próximo.

2 forkJoin

Este operador será obtido em uma matriz ou objeto dict como uma entrada e aguardará a conclusão do observável e retornará os últimos valores emitidos do observável fornecido.

3 fundir

Este operador pegará a entrada observável e emitirá todos os valores do observável e emitirá uma única saída observável.

4 raça

Ele retornará um observável que será uma cópia espelhada da primeira fonte observável.

Operadores de transformação

A seguir estão os operadores que discutiremos na categoria Operador de transformação.

Sr. Não Operador e descrição
1 amortecedor

O buffer opera em um observável e aceita o argumento como um observável. Ele começará a armazenar em buffer os valores emitidos em seu observável original em uma matriz e emitirá o mesmo quando o observável tomado como argumento emite. Uma vez que o observável tomado como argumento seja emitido, o buffer é reiniciado e começa a armazenar novamente no original até que o observável de entrada seja emitido e o mesmo cenário se repita.

2 bufferCount

No caso do operador buffercount (), ele coletará os valores do observável no qual é chamado e emitirá os mesmos quando o tamanho do buffer fornecido para buffercount corresponder.

3 tempo de atraso

Isso é semelhante a bufferCount, portanto, aqui, ele coletará os valores do observável no qual é chamado e emitirá o bufferTimeSpan. Recebe 1 argumento, ou seja, bufferTimeSpan .

4 bufferToggle

No caso de bufferToggle () leva 2 argumentos, openings e fechandoSelector. Os argumentos de abertura são assináveis ​​ou uma promessa de iniciar o buffer e o segundo argumento fechamentoSelector é novamente assinável ou promete um indicador para fechar o buffer e emitir os valores coletados.

5 bufferWhen

Este operador fornecerá os valores na forma de array, ele recebe um argumento como uma função que decidirá quando fechar, emitir e redefinir o buffer.

6 expandir

O operador de expansão recebe uma função como um argumento que é aplicado na fonte observável recursivamente e também na saída observável. O valor final é observável.

7 groupBy

No operador groupBy, a saída é agrupada com base em uma condição específica e esses itens de grupo são emitidos como GroupedObservable.

8 mapa

No caso do operador de mapa, uma função de projeto é aplicada em cada valor na fonte Observable e a mesma saída é emitida como um Observable.

9 mapa para

Um valor constante é fornecido como saída junto com o Observable sempre que a fonte Observable emite um valor.

10 mergeMap

No caso do operador mergeMap, uma função de projeto é aplicada em cada valor de origem e a saída dele é mesclada com a saída Observable.

11 switchMap

No caso do operador switchMap, uma função de projeto é aplicada em cada valor de origem e a saída dele é mesclada com a saída Observable, e o valor fornecido é o Observable projetado mais recente.

12 janela

Recebe um argumento windowboundaries que é um observável e devolve um observável aninhado sempre que os limites da janela emite

Operadores de filtragem

A seguir estão os operadores que discutiremos na categoria de operador de filtragem.

Sr. Não Operador e descrição
1 debounce

Um valor emitido da fonte Observável após um tempo e a emissão é determinada por outra entrada dada como Observável ou promessa.

2 debounceTime

Ele emitirá um valor da fonte observável somente depois que o tempo for concluído.

3 distinto

Este operador fornecerá todos os valores observáveis ​​de origem que são distintos quando comparados com o valor anterior.

4 elementAt

Este operador fornecerá um único valor da fonte observável com base no índice fornecido.

5 filtro

Este operador filtrará os valores da fonte Observable com base na função de predicado fornecida.

6 primeiro

Este operador dará o primeiro valor emitido pela fonte Observable.

7 último

Este operador dará o último valor emitido pela fonte Observable.

8 ignoreElements

Este operador irá ignorar todos os valores da fonte Observable e apenas executará chamadas para completar ou funções de callback de erro.

9 amostra

Este operador fornecerá o valor mais recente da fonte Observable e a saída dependerá do argumento transmitido a ele emite.

10 pular

Este operador retornará um observável que ignorará a primeira ocorrência de itens de contagem tomados como entrada.

11 acelerador

Este operador emitirá e também ignorará os valores da fonte observáveis ​​pelo tempo determinado pela função de entrada tomada como um argumento e o mesmo processo será repetido.

Operadores de serviços públicos

A seguir estão os operadores que discutiremos na categoria de operadores de serviços públicos.

Sr. Não Operador e descrição
1 toque

Este operador terá a saída, igual ao observável de origem, e pode ser usado para registrar os valores do observável para o usuário. O valor principal, erro se houver ou se a tarefa foi concluída.

2 demora

Este operador atrasa os valores emitidos da fonte Observable com base no tempo limite fornecido.

3 atrasar quando

Este operador atrasa os valores emitidos da fonte Observável com base no tempo limite de outro observável tomado como entrada.

4 observeOn

Este operador baseado no agendador de entrada irá reemitir as notificações da fonte Observable.

5 subscribeOn

Este operador ajuda a assinantes assíncronos para a fonte Observable com base no planejador considerado como entrada.

6 intervalo de tempo

Este operador retornará um objeto que contém o valor atual e o tempo decorrido entre o valor atual e o anterior que é calculado usando a entrada do planejador obtida.

7 timestamp

Retorna o carimbo de data / hora junto com o valor emitido da fonte Observable, que informa sobre a hora em que o valor foi emitido.

8 tempo esgotado

Este operador lançará um erro se a fonte Observable não emitir um valor após o tempo limite fornecido.

9 toArray

Acumula todos os valores de origem do Observable e os produz como uma matriz quando a origem é concluída.

Operadores condicionais

A seguir estão os operadores que discutiremos na categoria de operadores condicionais.

Sr. Não Operador e descrição
1 defaultIfEmpty

Este operador retornará um valor padrão se a fonte observável estiver vazia.

2 cada

Ele retornará um Observable com base na função de entrada que satisfaz a condição de cada um dos valores da fonte Observable.

3 encontrar

Isso retornará o observável quando o primeiro valor da fonte Observável satisfizer a condição para a função de predicado tomada como entrada.

4 findIndex

Este operador baseado no agendador de entrada irá reemitir as notificações da fonte Observable.

5 está vazia

Este operador dará a saída como verdadeira se a entrada observável for para um retorno de chamada completo sem emitir nenhum valor e falso se a entrada observável emitir qualquer valor.

Operadores multicast

A seguir estão os operadores que vamos discutir na categoria de operadores multicast.

Sr. Não Operador e descrição
1 multicast

Um operador multicast compartilha a única assinatura criada com outros assinantes. Os parâmetros que o multicast recebe, é um assunto ou um método de fábrica que retorna um ConnectableObservable que tem o método connect (). Para se inscrever, o método connect () deve ser chamado.

2 publicar

Este operador retorna ConnectableObservable e precisa usar o método connect () para assinar os observáveis.

3 publishBehavior

publishBehaviour usa BehaviourSubject e retorna ConnectableObservable. O método connect () deve ser usado para assinar o observável criado.

4 publicarLast

publishBehaviour faz uso de AsyncSubject e retorna ConnectableObservable. O método connect () deve ser usado para assinar o observável criado.

5 publicarReplay

publishReplay faz uso de assunto de comportamento em que pode armazenar os valores e reproduzir os mesmos para os novos assinantes e retorna ConnectableObservable. O método connect () deve ser usado para assinar o observável criado.

6 compartilhar

É um alias para o operador mutlicast (), com a única diferença que você não precisa chamar o método connect () manualmente para iniciar a assinatura.

Operadores de tratamento de erros

A seguir estão os operadores que discutiremos na categoria de operadores de tratamento de erros.

Sr. Não Operador e descrição
1 catchError

Este operador se encarrega de detectar erros na fonte Observable, retornando um novo Observable ou um erro.

2 tentar novamente

Este operador se encarregará de tentar novamente na fonte Observável se houver erro e a nova tentativa será feita com base na contagem de entrada fornecida.