In the above definition of RxJS, you have encountered the word reactive programming
, so let me give you a brief example of reactive programming.
Reactive programming is a declarative
programming paradigm concerned with the data streams and the propagations of change.
A programming paradigm is a style or way of programming.
Few common programming paradigms includes:
Control flow in imperative programming is explicit. Commands show how the computation takes place, step by step. Each step affects the global state of the computation.
Control flow in declarative programming is implicit. The programmer states only what the result should look like, not how to obtain it.
As RxJS is a declarative programming language, so for better understanding of this, let’s take a look at below example. I am going to show an example, how below code works in imperative and declarative programming both.
For example: In imperative programming, a = b +c
would mean that a is being assigned the result of b + c
in the instant the expression is evaluated, and later, the values of b and c can be changed with no effect on the value of a.
On the other hand in reactive programming, which is declarative, the value of a is automatically updated whenever the value of b or c is changed, without the program having to re-execute the statement a = b + c
to determine the presently assigned value of a.
So, RxJS is an incredible tool for reactive programming, and today we are going to dive a little deeper into what observables, observers and operators are.
An observable is just a function, which packs the data that can be passed around from one thread to another thread. They are created to emit the data synchronously or asynchronously based on their configuration. They are like the supplier of data to their consumer.
Angular use lot of observables in different scenarios. These includes:
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.To better understand Observables, let’s create a sample code.
const GetSumObserver = {
sum: 0,
next(value) {
this.sum = this.sum + value;
},
error() { },
complete() {
console.log('Total Sum: ' + this.sum);
}
};
Rx.Observable.of(10, 20, 30) // Synchronously emits 10, 20, 30 and then completes.
.subscribe(GetSumObserver);
// "Sum equals: 60"
sampleexample.ts
Here, in the above example, we have created our custom observable and subscribe it using the three input values, and the result should be the sum of all values passed to it.
In simple term, observers are the consumer of the data, which is emitted by observables as a producer. To consume data, observers subscribe to the observables using its subscribe()
method. So, whenever observables emit data, all the registered observers received the data in next()
callback.
An observer is an object that defines callback methods to handle three types of notifications that an observable can send. These callback methods are: next()
, error()
and complete()
.
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.We have subscribed our observable using .subscribe()
method using the .of()
operator, passing the values as a parameter. Without subscribe calling, our observable will not emit any value.
RxJS provides us numerous operators like map()
, filter()
, concat()
etc. to perform complex manipulation of the collection on the source observables. Operators are just like functions, which takes configuration options, and return a function that takes a source observable.
Few of the RxJS operators are:
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.Let’s take a small example of operators.
Using pipe()
operator, you can combine multiple operators. For example:
import { filter, map } from 'rxjs/operators';
const squareOf2 = of(1, 2, 3, 4, 5,6)
.pipe(
filter(num => num % 2 === 0),
map(num => num * num)
);
squareOf2.subscribe( (num) => console.log(num));
operators.ts
The of()
method will create and return an Observable from the 1, 2, 3, 4, 5,6
numbers and the pipe()
methodwill apply the filter()
and map()
operators on each emitted value.
In this blog, we read about observables, observers and operators used in Angular app. This post is not in details, but give you an overview of all these concepts. I shared links of few famous operators, which are frequently used in anyAngular app.
☞ A comparison between Angular and React
☞ Getting Started with Nx in Angular
☞ Learn Angular 8 from Scratch for Beginners
☞ Deploy an Angular app to Docker
☞ CircleCI Test Configuration for Angular
☞ Add Authentication to Your Angular PWA
☞ AngularJS Directive with Example: ng-init, ng-app, ng-repeat, ng-model
☞ What’s the difference between AngularJS and Angular?
☞ Top 18 Mistakes AngularJS Developers Makes
In the above definition of RxJS, you have encountered the word reactive programming
, so let me give you a brief example of reactive programming.
Reactive programming is a declarative
programming paradigm concerned with the data streams and the propagations of change.
A programming paradigm is a style or way of programming.
Few common programming paradigms includes:
Control flow in imperative programming is explicit. Commands show how the computation takes place, step by step. Each step affects the global state of the computation.
Control flow in declarative programming is implicit. The programmer states only what the result should look like, not how to obtain it.
As RxJS is a declarative programming language, so for better understanding of this, let’s take a look at below example. I am going to show an example, how below code works in imperative and declarative programming both.
For example: In imperative programming, a = b +c
would mean that a is being assigned the result of b + c
in the instant the expression is evaluated, and later, the values of b and c can be changed with no effect on the value of a.
On the other hand in reactive programming, which is declarative, the value of a is automatically updated whenever the value of b or c is changed, without the program having to re-execute the statement a = b + c
to determine the presently assigned value of a.
So, RxJS is an incredible tool for reactive programming, and today we are going to dive a little deeper into what observables, observers and operators are.
An observable is just a function, which packs the data that can be passed around from one thread to another thread. They are created to emit the data synchronously or asynchronously based on their configuration. They are like the supplier of data to their consumer.
Angular use lot of observables in different scenarios. These includes:
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.To better understand Observables, let’s create a sample code.
const GetSumObserver = {
sum: 0,
next(value) {
this.sum = this.sum + value;
},
error() { },
complete() {
console.log('Total Sum: ' + this.sum);
}
};
Rx.Observable.of(10, 20, 30) // Synchronously emits 10, 20, 30 and then completes.
.subscribe(GetSumObserver);
// "Sum equals: 60"
sampleexample.ts
Here, in the above example, we have created our custom observable and subscribe it using the three input values, and the result should be the sum of all values passed to it.
In simple term, observers are the consumer of the data, which is emitted by observables as a producer. To consume data, observers subscribe to the observables using its subscribe()
method. So, whenever observables emit data, all the registered observers received the data in next()
callback.
An observer is an object that defines callback methods to handle three types of notifications that an observable can send. These callback methods are: next()
, error()
and complete()
.
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.We have subscribed our observable using .subscribe()
method using the .of()
operator, passing the values as a parameter. Without subscribe calling, our observable will not emit any value.
RxJS provides us numerous operators like map()
, filter()
, concat()
etc. to perform complex manipulation of the collection on the source observables. Operators are just like functions, which takes configuration options, and return a function that takes a source observable.
Few of the RxJS operators are:
HTTP
module uses observables.Router
and Form Modules
to listen for and responds to user-inputs events.EventEmitter
class extends Observable.Let’s take a small example of operators.
Using pipe()
operator, you can combine multiple operators. For example:
import { filter, map } from 'rxjs/operators';
const squareOf2 = of(1, 2, 3, 4, 5,6)
.pipe(
filter(num => num % 2 === 0),
map(num => num * num)
);
squareOf2.subscribe( (num) => console.log(num));
operators.ts
The of()
method will create and return an Observable from the 1, 2, 3, 4, 5,6
numbers and the pipe()
methodwill apply the filter()
and map()
operators on each emitted value.
In this blog, we read about observables, observers and operators used in Angular app. This post is not in details, but give you an overview of all these concepts. I shared links of few famous operators, which are frequently used in anyAngular app.
☞ A comparison between Angular and React
☞ Getting Started with Nx in Angular
☞ Learn Angular 8 from Scratch for Beginners
☞ Deploy an Angular app to Docker
☞ CircleCI Test Configuration for Angular
☞ Add Authentication to Your Angular PWA
☞ AngularJS Directive with Example: ng-init, ng-app, ng-repeat, ng-model
☞ What’s the difference between AngularJS and Angular?
☞ Top 18 Mistakes AngularJS Developers Makes
#angular