Internução
Наблюдаемое émama funcionalidade da biblioteca rxjs , que é utilizada internamente pelo framework e já é instalada quando você cria uma nova aplicação agnular. Com ВСЕДИЯ, Conseguimos lidar com Transferência de Dados Assíncrona Анкет Muitas Vezes, Seu uso é Semelhante ao de Desis do JavaScript, Porém, Podendo Ser Uma Fonte de Transferência de Dados Contínua, Ou Seja, O Внешнее подростка эмитир Dados Várias Vezes Emmentos distintos de sua.
USO
Seu uso conneake em basicemente se inscrever (подписка) – jum usmable, Informando o Que deverá ser feito com o dado que que irá ecepber. Essa Inscrição Poderá Escutar 3 Interações: Sucesso, Erro E The Apploy (Encerrado) Анкет Podemos Informar No Proprio подписывается через Parâmetro, как Funcões que devem ser execadas quando alguma dessas interações ocorrerem, sendo somente funcáo de sucesso obrigatória.
É tere em mente que ao emitir um erro, o Наблюдаемый Semper Encerrará Sua execução Подендо Пассар Алгум Дадо. AO FARTORAR, ELE APENAS ENCERRA A Execução, Sem Passar Nenhum Dado Para OS Inscritos, Apenas os informa que ele eleplourou seu ciclo.
Podemos nos inscrever ao mesmo наблюдаемая Mais de Uma Vez E em vários pontos da aplicação, tornado-os uma excelente alternativa para comunicação entre componentes , o Que Recomendo ser feito com usando supt ou birthiorsubject, que derivam de emartionables em rápida infulataço. Deixarei Para Abordá-Los Em Outro Post.
Резюме
Resumidamentame, Com um Наблюдаемые подмос: • Прием Дадос Вария Vezes e em vários Nos inscrever para deceber dados de um mesmo isbodable em vários pontos da aplicação • Exember alguma operação quando o Дадо для приема Com Sucesso • Exemar Alguma Operação Quando Emitir Erro • Руководитель alguma operação quando a Falcear
Пример
NãAO é TãO Comum Criar Наблюдается «Puros», Mas Acredito Que Seja A Melhor Maneira Para Pare o Seu Funcionamento. Detalharei um pouco cada trecho do código e logo após disponibilizarei um examplo funcional no Stackblitz.
Нет наблюдаемого, определенного наблюдного реагирования por amitir algum dado para todos os inscritos, Наблюдения , Através do método Next () Анкет
novoObservable(): Observable{ return new Observable (observador => { setTimeout(() => { observador.next("Primeiro timeout"); }, 2000); setTimeout(() => { observador.next("Segundo timeout"); }, 3000); setTimeout(() => { observador.next("Terceiro timeout"); }, 5000); setTimeout(() => { observador.next("Quarto timeout"); }, 4000); }); }
Para Deceber Os Dados Do Observable Essuestário se inscrever nele através do método subscribe () Анкет Нет ngoninit () DO MEU Componente, я инспектору не наблюдаемой Criado Antermente, Passando Como Parâmetro в качестве Funcões de Sucesso, Erro E Encerramento. Basicamente, IREI Adicionar A UMA LISTA OS RESTODADOS EMITIDOS PARA EXIBI-LA NA TELA. Чамамос Эйссо де Ума Подписка Анкет
ngOnInit() {
const observable = this.novoObservable();
this.inscricaoObservable = observable.subscribe(
valor => {
this.valoresRecebidos.push(valor);
},
erro => {
this.valoresRecebidos.push(erro);
},
() => {
this.valoresRecebidos.push("O observable foi encerrado!");
});
}
Алем Д.Е. Методо Next () , Temos o error () , ao Qual, нет пример Abaixo, Passo uma mensagem de erro Que, da mesma forma que passo dados através do Next () , o Наблюдаемое эмитира à todos наблюдения .
Disparei um erro no Тайм -аут сегундо , O Que Irá Interromper o Наблюдаемые Antes de Emitir O Terceiro e Quarto Timeouts Анкет Isso acionará A Segunda Funcáo Que Passamos por parâmetro nossa Подписка , adicionando o resultado “erro no oblectable!” à nossa Lista de Valores recebidos.
novoObservable(): Observable{ return new Observable (observador => { setTimeout(() => { observador.next("Primeiro timeout"); }, 2000); setTimeout(() => { observador.next("Segundo timeout"); observador.error("Erro no observable!"); }, 3000); setTimeout(() => { observador.next("Terceiro timeout"); }, 5000); setTimeout(() => { observador.next("Quarto timeout"); }, 4000); }); }
POR FIM, o Наблюдение Тамбем Disponibiliza O Método upply () , que aciona a terceira funcáo que passamos por parâmetro, encerrando o наблюдаемый без месо -мгновения, porém, sem passar nenhuma informação. O Valor A Ser Inserido na Lista de Valores foi defineido na própria funcáo.
novoObservable(): Observable{ return new Observable (observador => { setTimeout(() => { observador.next("Primeiro timeout"); }, 2000); setTimeout(() => { observador.next("Segundo timeout"); observador.complete(); }, 3000); setTimeout(() => { observador.next("Terceiro timeout"); }, 5000); setTimeout(() => { observador.next("Quarto timeout"); }, 4000); }); }
Veja funcionando:
Para Testar O Exemplo, Talvez Seja Necensityario atualizar O Navegador Que Ele Disponibiliza. Remova os os trechos comentados (ctrl k, u) da criocão do error () OU upply () Сан -ационадос, О наблюдательный é Interprompido e não emite todos os dados. Экспериментируйте Também Remover как Funcões Que Passamos por parâmetro para o Наблюдаемый, Deixando Apenas A De Sucesso (Primeira).
Caso não Consiga ver o o ulded, clique Aqui Анкет
Отмена Inscrição!
REPARE QUE TAMBEM CRIEI A VARIAVEL THAMADA Подписка не является примером передней. SE desinscrever dos наблюдается é Uma boa prática que deve não deve ser esquecida! MAIS DETALHESE NESTE POST: Наблюдаемые: Cancelar Inscrição (UNSOUBSCRIBE) é
Оригинал: “https://dev.to/felipedsc/observables-como-funcionam-15eb”