What is the difference between Promises and Observables in Angular?
Introduction
First of all, Promise
and Observable
are used for handling Asynchronous Data in applications. In this article, we are gonna learn about the difference between Promise and Observable.
What is Promise?
A Promise
is Future Value of an Event. In Angular when we are using API, Sockets, Timers like Time Delaying functionalities in a function X, we need to send back assurance for caller function of function X.
In other words, it is a relation between Callee and Caller Function, In which caller function believes that caller must return some value as resolution or reject.
For example :
getData() {
return this.http.get(this.apiUrl)
.toPromise()
.then(res => {
resolve(res);
})
.catch(err => {
console.log(err);
reject(err);
});
}
In this program, the function getData()
returns a Promise which will be a success or failure. According to its request status, it will resolve or reject data. While the caller function waits until the data arrives from this function.
What is Observable?
An Observable
is like a Steam (in many languages) and allows to pass zero or more events where the callback is called for each event. More than multiple events handling it helps us in asynchronous programming.
A third-party library called Reactive Extensions (RxJS) is used by Angular to use Observable
.
For Example:
getData (): Observable<any[]> {
return this.http.get(this.apiUrl)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}