O que é RxJS?


Nesse artigo eu procuro esclarecer um pouco sobre essa biblioteca voltada para a programação funcional e que, hoje em dia, tem crescido exponencialmente em termos de adoção.

Então, de que se trata o RxJS?

Bem, como disse antes, o RxJS é uma biblioteca para uso em projetos que utilizam Javascript (incluindo JSX e TypeScript), que faz parte do projeto de Programação Reativa, daí que vem o Rx, de Reactive Extension. Além dela, existem também outros projetos voltados para a linguagem Java, Python, C++, etc.

E para quê serve? Qual sua finalidade?

Nós desenvolvedores, cedo ou tarde, trabalhamos em algum projeto de complexidade sem tamanho e que lida com inúmeras fontes de dados assíncronas, chamadas de Stream. Essas Streams precisam ser tratadas para que sejam mostradas para o usuário, na tela de um Smartphone, por exemplo, e isso demanda muito trabalho pois precisamos verificar informação por informação e mostrar somente o que importa naquele momento.
O RxJS trouxe o conceito de Observable justamente para lidar com Streams e com alto volume de informação, de forma a facilitar esse tratamento, debugs, testes, etc.

Observable Pattern

Para isso, fazemos uso do padrão Observable, ou Observable Pattern, que é formado por:

  • Um Observable, que se trata de uma coleção de futuros eventos que podem ser invocados numa determinada situação ou momento;
  • Um Observer que sabe ouvir e tratar os valores recebidos pelo Observable;
  • Uma Subscription, ela é basicamente a execução de um Observable e também serve para cancelar essa mesma execução;
  • Operators, funções puras escritas sob o conceito de linguagem funcional (tratarei dessas funções num futuro próximo) que servem para lidar com coleções utilizando operadores como map, filter, reduce, etc;
  • Temos ainda o Subject, equivalente a um EventEmitter e que é a única forma de fazer um multicasting para vários Observers.
  • E, por último, Schedulers. Esses servem para lidar com concorrência entre os processos, nos dando a opção de escolher quando as informações serão processadas. Exemplos mais comuns são SetTimeout e RequestAnimationFrame.

Então, em resumo, qualquer tipo de fonte de informação pode ser tratada utilizando-se dessa biblioteca.
Exemplos mais comuns, e os quais eu já utilizei em meus projetos, incluem tratamento de informações vindas de bancos de dados em tempo real. Quem utiliza o AngularFirebase2, a implementação do Firebase utilizada no Angular e Ionic, sabe muito bem da sua utilizada na hora de receber e tratar informações das Collections e com os Subscribers você monitora as mudanças no banco em tempo real.
Mas há também usos em projetos de jogos e animações, por exemplo, já que é necessário 'observar' os comandos de um Joystick, teclado ou mouse. Então pode-se criar um Observable para isso.

Enfim, esse post foi apenas para fazer um resumo de pra quê serve essa biblioteca, mas, em breve, trarei posts práticos de seu uso e talvez tudo fique mais claro.

Valeu!
Próximo
«Anterior
Anterior
Próximo Post »
0 Comentar