Home > Web Front-end > JS Tutorial > Migrating subscribe Callbacks to subscribe arguments in RxJS

Migrating subscribe Callbacks to subscribe arguments in RxJS

Susan Sarandon
Release: 2025-01-09 20:29:48
Original
520 people have browsed it

Migrando subscribe Callbacks para subscribe arguments no RxJS

You, the person who uses rxjs in your daily life, may have noticed that since version 6.4. RxJS placed a deprecated annotation in the subscribe:

method

@deprecated — Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments

The justification is that using separate callbacks generates worse reading of the method, and therefore it is preferable to use subscribe arguments, destructuring the properties that the method returns.

To better understand what this looks like in practice, let's look at a quick example:

data.js

import { Observable } from "rxjs";

/**
 * Cria um observable que emite valores numéricos de 1 até 5, e então se finaliza.
 *
 * @returns {Observable<number>} Um observable que emite números de 1 até 5 em sequência.
 */
export const data = () => {
  return new Observable((observer) => {
    for (let i = 1; i <= 5; i++) {
      observer.next(i);
    }

    observer.complete();
  });
};

/**
 * Cria um observable que emite um error imediatamente
 *
 * @returns {Observable<never>} Um observable que emite um erro.
 */
export const dataWithError = () => {
  return new Observable((observer) => {
    observer.error("Aconteceu um erro!");
  });
};

Copy after login

This will be our base file. The first method outputs numbers from 1 to 5 in sequence with the .next(); method, and as soon as the loop is finished, the observable is completed with the .complete(); method.

The second method creates an observable that throws an error immediately

PS: when the .error() method is called, the observable stops emitting values ​​and cannot continue emitting values ​​via .next() or be completed with .complete().

And let's get to the point.

We will use as a first example the way that is currently deprecated, and then I will show how to use the observable argument.

import { data, dataWithError } from "./data.js";

data().subscribe(
  (value) => console.log(value),
  (error) => {},
  () => {
    console.log("completou");
  }
);

dataWithError().subscribe(
  () => {},
  (error) => {
    console.error({ error });
  }
);

Copy after login

Note that because it is an example it is something more visible, but at the same time, we need to know the order of each callback (next, error and complete).

That said, let's get to how to use argument observables:

import { data, dataWithError } from "./data.js";

data().subscribe({
  next: (data) => console.log(data),
  complete: () => console.log("completou"),
});

dataWithError()
    .subscribe({ error: (error) => console.error({ error })
    });
Copy after login

From this point on with the argument observables, we have a cleaner reading of what we are using within the subscribe method, not needing to declare callbacks or arguments that we will not use.

It is an easy migration to perform, and will leave your code without deprecation messages for this API.

The above is the detailed content of Migrating subscribe Callbacks to subscribe arguments in RxJS. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template