首页 >web前端 >js教程 >迁移订阅回调以订阅 RxJS 中的参数

迁移订阅回调以订阅 RxJS 中的参数

Susan Sarandon
Susan Sarandon原创
2025-01-09 20:29:48529浏览

Migrando subscribe Callbacks para subscribe arguments no RxJS

日常生活中使用 rxjs 的你可能已经注意到,从 6.4 版本开始。 RxJS 在 subscribe:

方法中放置了一个已弃用的注释

@deprecated — 使用观察者参数,而不是传递单独的回调参数。采用单独回调参数的签名将在 v8 中删除。详细信息:https://rxjs.dev/deprecations/subscribe-arguments

理由是使用单独的回调会导致方法的读取效果更差,因此最好使用订阅参数,解构方法返回的属性。

为了更好地理解这在实践中是什么样子,让我们看一个简单的例子:

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!");
  });
};

这将是我们的基本文件。第一个方法使用 .next() 方法按顺序输出从 1 到 5 的数字,一旦循环完成,就使用 .complete() 方法完成可观察的操作。

第二种方法创建一个立即抛出错误的可观察对象

PS:当调用 .error() 方法时,observable 停止发出值,并且无法通过 .next() 继续发出值或使用 .complete() 完成。

让我们进入正题吧。

我们将使用当前已弃用的方式作为第一个示例,然后我将展示如何使用 observable 参数。

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

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

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

请注意,因为它是一个示例,所以更明显,但同时,我们需要知道每个回调的顺序(next、error 和complete)。

也就是说,让我们来看看如何使用参数 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 })
    });

从这一点开始,通过参数 observables,我们可以更清楚地了解我们在 subscribe 方法中使用的内容,不需要声明我们不会使用的回调或参数。

这是一个易于执行的迁移,并且不会留下此 API 的弃用消息。

以上是迁移订阅回调以订阅 RxJS 中的参数的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn