Рубрики
Без рубрики

Наблюдаемые: Como Funcionam?

Internução Наблюдаемый é Uma funcionalidade da biblioteca rxjs, que é utilizada internament … Tagged с помощью угловой, JavaScript, RXJS.

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”