Prefácio
O núcleo do RXJS é o objeto observável, que é uma combinação de programação assíncrona e de eventos usando sequências de dados observáveis.
O modelo de programação assíncrono que é muito semelhante a isso é promessa. A promessa é um modelo assíncrono baseado em mudanças de estado. Uma vez que o estado de espera entra em um estado bem -sucedido ou falhado, ele não poderá ser modificado novamente. Quando o estado muda, o assinante pode obter apenas um valor; enquanto observável é um modelo de programação assíncrono baseado em sequências. À medida que a sequência muda, o assinante pode obter continuamente novos valores. Além disso, a Promise fornece apenas um mecanismo de retorno de chamada e não possui mais operações para apoiar o processamento complexo de resultados. A Observable fornece uma variedade de operadores para processar os resultados da operação para atender à lógica complexa de aplicativos.
Na programação real, lidamos principalmente com três objetos: observável , observador , assinatura :
Tome o evento de clique de um elemento como exemplo para ver como usar o observável:
var clickstream = new rx.observable (observador => {var handle = evt => observer.next (evt); element.addeventListener ('click', handle); return () => element.removeEventListener ('click', lustre);}); siglation = clickstream.subsscribe (evtrcld ('click', lacesso); evt.id);}, err => {console.error ('OnError');}, () => {console.log ('oncomplete');}); setTimeout (() => {subcription.UnsubScribe ();}, 1000); Não seria muito problemático se cada evento precisar ser embrulhado assim? Portanto, o RXJS nos fornece uma função conveniente: Observable.fromEvent para facilitar a conexão dos eventos.
Operadores de link comuns: concat, mesclar, combinações, etc.
Operações de projeção: mapa, mapa planície, plangmap precisa ser introduzido
Filtro: filtro, distintiultchanges,
Classificação do operador: operadores por categorias
Manuseio de erros: pegue, tente novamente, finalmente
Descompressão: debounce, acelerador, amostra, pausível
Reduce: buffer, bufferwithcount, bufferwithtime
Para dominar os operadores do observável, você deve primeiro aprender a entender o diagrama de sequência:
As setas representam sequências que mudam com o tempo. Por exemplo, clicar no mouse continuamente em um elemento e o círculo representa o impacto da sequência por fora. Por exemplo, cada clique do elemento acionará um retorno de chamada de evento, e os números no círculo são informações emitidas de fora. Por exemplo, cada acionador de evento terá um objeto de evento, representando algumas informações desta operação.
Para usar de maneira flexível o observável para lidar com a lógica complexa, você deve aprender a usar os operadores que ele fornece. Dividi os operadores em duas categorias: operação de sequência única e operação de sequência composta. A operação de sequência única refere-se a operações de operação realizadas em uma sequência. A operação de sequência composta refere -se a operadores que processam duas ou mais seqüências. A operação de sequência composta é relativamente difícil de entender.
Vamos primeiro analisar as operações de sequência única, tomando as operações do mapa como exemplo:
A operação do mapa é converter as informações transmitidas para o exterior em uma sequência todas as vezes. Conforme mostrado na figura acima, o mapa multiplica o valor de transmissão de cada vez por dez. Então, quando o assinante assina, o valor de assinatura obtido cada vez não é mais o 123 original, mas os diagramas de sequência convertidos 10 20 30. Através da sequência, você pode entender mais facilmente as operações do Observable.
Vamos dar a fusão como um exemplo
O objetivo da operação de mesclagem é sintetizar duas seqüências independentes em uma sequência. Originalmente, à medida que o tempo avança, a sequência 1 transmite A a 100ms, B a 200ms e C a 300ms, seu assinante receberá três valores de ABC a 400ms; A sequência 2 transmite D a 150ms, E a 250ms e F a 350ms, e seu assinante recebe três valores de DEF dentro de 400ms. A nova sequência após a mesclagem receberá ABCDEF dentro de 400ms (observe o pedido).
Compreensão dos operadores comuns:
Obsertable.Range: transmite um certo número de seqüências de valor.
Observável.toArray: converte todos os valores emitidos em uma matriz quando a sequência é concluída.
Observable.flatmap: converte elementos no fluxo de sequência original em um novo fluxo de sequência e mescla esse novo fluxo de sequência na localização dos elementos na sequência original.
Observável.startwith: ele define o primeiro valor da sequência observável
Obsertable.combineLatest: semelhante ao promiseall, ele será executado somente depois que todas as seqüências têm resultados.
Observável.scan: Os valores emitidos na sequência podem ser agregados. Semelhante para reduzir, a redução agregará os valores de toda a sequência e enviará um valor final quando a sequência for concluída.
Observável.sample: Obtenha uma certa amostra de uma sequência contínua
Observable.Merge: mescle várias seqüências em uma e pode ser usado como ou
Obsertable.timestamp: pode obter o tempo de transmissão de cada valor de transmissão
Obsertable.distinctuntilchanged (compare, seletor): seletor retira a chave usada para comparação e a compara para comparar duas teclas
Obsertable.Takewhile () para de transmitir dados quando o parâmetro é falso
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.