Angular RxJS: Observables, Observers and Operators Introduction

Angular  RxJS: Observables, Observers and Operators Introduction

In this blog, we will learn about some basics of RxJS and its components like Observables, Observers and Operators. So, first of all, what is RxJS?

In the above definition of RxJS, you have encountered the word reactive programming, so let me give you a brief example of reactive programming.

What Is 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:

Imperative Programming

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.

Declarative Programming

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.

Example

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.

What is an Observable?

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:

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

What is an Observer?

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().

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

What is an Operator?

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:

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

Summary

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.

Further Reading

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.

What Is 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:

Imperative Programming

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.

Declarative Programming

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.

Example

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.

What is an Observable?

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:

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

What is an Observer?

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().

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

What is an Operator?

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:

  • To make AJAX request and response,Angular HTTP module uses observables.
  • Observables are used in Router and Form Modules to listen for and responds to user-inputs events.
  • The 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.

Summary

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.

Further Reading

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

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Install Angular - Angular Environment Setup Process

Install Angular in easy step by step process. Firstly Install Node.js & npm, then Install Angular CLI, Create workspace and Deploy your App.

Basics of Angular: Part-1

What is Angular? What it does? How we implement it in a project? So, here are some basics of angular to let you learn more about angular. Angular is a Typesc

Angular Sass: How To Use Sass In Angular 9 Tutorial

Sass in Angular is an extension of CSS that allows you to use things like variables, nested rules, inline imports. Angular supports Sass, CSS, and Less.

How to Upgrade Angular 8 To Angular 9

Angular is currently the most popular JavaScript framework and is used by several expert developers when developing single-page applications or powerful web apps. It has become quite crucial for the developers of Angular to add more features to the framework and fix the bugs . Let's learn how to upgrade Angular 8 to Angular 9 using CLI.

Visualizing data with NGX-Charts in Angular

Data Science, Data Analytics, Big Data, these are the buzz words of today's world. A huge amount of data is being generated and analyzed every day. So communica