Observável e Prometido em Angular
Mar 12 2023
Neste artigo, discutiremos Observable e Promise em Angular com a ajuda da implementação prática passo a passo. Agenda Emit Values 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.
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!
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)