Observable `of` deprecated. What is the equivalent?

less than a minute read 06-10-2024
Observable `of` deprecated. What is the equivalent?


Observable of is Deprecated: What's the New Way to Create Observables?

Problem: The of operator in RxJS, used to create simple Observables emitting a single value, has been deprecated. This change might leave you wondering how to effectively create these Observables in your code.

Scenario: Let's say you're working with a piece of code that uses of to create an Observable emitting a single string value:

import { of } from 'rxjs';

const myObservable = of('Hello, world!'); 

//  Later in your code:
myObservable.subscribe(value => console.log(value)); 

This code is now deprecated.

Solution: The equivalent way to create this Observable is to use the from operator:

import { from } from 'rxjs';

const myObservable = from(['Hello, world!']); 

// Later in your code:
myObservable.subscribe(value => console.log(value)); 

Explanation:

The from operator is now the preferred way to create Observables from various input types, including arrays, Promises, iterables, and even single values.

Here's why from is preferred:

  • Consistency: from provides a unified way to create Observables from different sources.
  • Flexibility: from can handle multiple inputs, making your code more adaptable.
  • Future Proof: The from operator is actively maintained and will be supported in future RxJS versions.

Example:

Let's see how from handles different inputs:

import { from } from 'rxjs';

// Single value
const singleValueObservable = from('Hello!');

// Array of values
const arrayObservable = from(['a', 'b', 'c']);

// Promise
const promiseObservable = from(new Promise((resolve, reject) => {
  setTimeout(() => resolve('Promise resolved!'), 1000);
}));

Key Takeaways:

  • The of operator is deprecated and should be replaced with from.
  • from offers a consistent and flexible way to create Observables from various data sources.
  • Always refer to the official RxJS documentation for up-to-date information and best practices.

Resources:

By using the from operator, you can ensure your code is up-to-date and ready for future RxJS developments. Remember, staying updated with the latest RxJS features and best practices is crucial for creating efficient and maintainable reactive applications.