Observável e Prometido em Angular

Neste artigo, discutiremos Observable e Promise em Angular com a ajuda da implementação prática passo a passo.

Agenda

  • Síncrono Vs Assíncrono
  • Observável Vs Promessa
  • No processo síncrono, várias tarefas são executadas uma após a outra, o que significa que a segunda tarefa está aguardando a conclusão da primeira tarefa. Nesse caso, o thread precisa aguardar antes de passar para outra tarefa.
  • Outro lado, no processo assíncrono, existem vários processos executados simultaneamente, ele não aguardará a conclusão da tarefa anterior. Ele apenas passará para a próxima tarefa e iniciará a execução.

Valores de emissão

var observable = new Observable(res => {
      res.next("Hello Piyush");
      res.next("Hello Vivek");
      res.next("Hello Rajesh");
    });
    observable.subscribe(console.log)

    //Output --> Observable can emmit multiple values
    //Hello Piyush
    //Hello Vivek
    //Hello Rajesh

    var promise = new Promise(res => {
      res("Hello Piyush");
      res("Hello Vivek");
      res("Hello Rajesh");
    });
    promise.then(console.log)

    //output
    //Hello Piyush --> Promise will emit only single values that's why other two values are not emmited.

var observable = new Observable(res => {
      res.next("Hello....");
    });
observable.subscribe(console.log) //Whenever subscribe observable then only it will emmit values beacuse it is lazy load.

//Output
//Hello....

var promise = new Promise(res => {
      console.log("Promise start executing..."); //In console can see this output before calling promise it will initialized on creation and eagerly load.
      res("Hello....");
    });
//Call promise
promise.then(console.log)

//Output
//Promise start executing...
//Hello....

//Async Promise
var promise = new Promise(res => {
      console.log("Start Executing...");

      res("Hello...");

      console.log("Execution End...");
    });
promise.then(console.log)

//Output
//Start Executing...
//Execution End...
//Hello...


//Async Observable
var observable = new Observable(res => {
      console.log("Start Executing...");
      setTimeout(() => {
        res.next("Hello Piyush");
        res.next("Hello Vivek");
        res.next("Hello Rajesh");
      })
        , 1000
      console.log("Execution End...");
    });
observable.subscribe(console.log)

//Output
//Start Executing...
//Execution End...
//Hello Piyush
//Hello Vivek
//Hello Rajesh

//Sync Observable
var observable = new Observable(res => {
      console.log("Start Executing...");
      res.next("Hello Piyush");
      res.next("Hello Vivek");
      res.next("Hello Rajesh");
      console.log("Execution End...");
    });
observable.subscribe(console.log)

//Output
//Start Executing...
//Hello Piyush
//Hello Vivek
//Hello Rajesh
//Execution End...

Em alguns casos, precisamos cancelar a assinatura do observável, se necessário, porque ele é executado em segundo plano e, às vezes, cria um problema de vazamento de memória. É por isso que precisamos lidar com esse cenário.

//observable
    const observable = new Observable((res) => {

      let count = 0;
        setInterval(() => {
          count = count + 1;
          res.next(count);
        }
          , 1000)
    })

//subscribe the observable
    this.subscription = observable.subscribe(ele => { console.log(ele) })

//unsubscribe the observable
    setTimeout(() => {
      this.subscription?.unsubscribe();
    }
    ,12000)

Verifique o link abaixo relacionado à documentação oficial para entender mais sobre o RxJS

https://rxjs.dev/guide/overview

Link do GitHub

https://github.com/Jaydeep-007/ObservableAndPromiseDemo/tree/master

Conclusão

Neste artigo, discutimos a diferença entre Promise e Observable com alguns exemplos práticos.

Feliz aprendizado!

Suggested posts

Encontrar informações sobre nomes de domínio

Um trecho de Small, Sharp Software Tools por Brian P. Hogan

Encontrar informações sobre nomes de domínio

Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.

A revolução sem código: liberando a prosperidade dos negócios com Webflow, Framer, Bubble.io,

A revolução sem código: liberando a prosperidade dos negócios com Webflow, Framer, Bubble.io,

Embarque em uma emocionante jornada de inovação e sucesso enquanto explora o potencial inexplorado dessas surpreendentes plataformas sem código. Deixe-me compartilhar uma história com você sobre Sapna, uma notável empresária.

Related posts

That Threat Archive: Vol 7 Black Basta

That Threat Archive: Vol 7 Black Basta

No mundo interconectado de hoje, a ameaça de ataques cibernéticos é mais prevalente do que nunca. Criminosos cibernéticos e agentes de estado-nação estão constantemente buscando explorar vulnerabilidades e roubar dados valiosos, representando um risco significativo para organizações de todos os tamanhos.

Journal Ouvert

Journal Ouvert

Diário aberto: uma foto por dia. Sempre fui fascinado por histórias.

A Mentira do Cowboy

Como as megacorporações venderam aos americanos uma mentira robusta

A Mentira do Cowboy

É uma manhã brilhantemente dourada nas colinas do oeste, enquanto os primeiros raios de sol iluminam a grama congelada nas planícies. Um rebanho de gado Angus plácido, preto e maciço, é recortado contra o nascer do sol enquanto segue por uma trilha batida até um local que todos conhecem bem; a barra de café da manhã.

Conversas Perigosas

Conversas Perigosas

Se quisermos continuar a prosperar neste planeta, teremos que ter conversas perigosas. Aqueles que desafiam o que temos feito, o que estamos fazendo e o que estamos determinados a continuar fazendo (ou planejamos fazer).