📜  observable.create 已弃用 - Javascript (1)

📅  最后修改于: 2023-12-03 15:33:16.610000             🧑  作者: Mango

Observable.create 已弃用 - Javascript

从RxJS 6开始,Observable.create已被弃用,并不推荐使用。该方法会返回一个Observable对象,它可以用来定义一个自定义的Observable,但是这种方式有许多缺点。

问题
  1. Observable.create不够直观,既繁琐又难以维护。
  2. Observable.create内部添加取消逻辑时十分困难。
  3. 使用Observable.create容易出现内存泄漏的问题。
替代方案

使用RxJS提供的静态构造函数或实例方法来创建Observable对象。

静态构造函数
  • of: 创建一个Observable,发射一系列指定的值,并在完成之前发出这些值。
import { of } from 'rxjs';

const source$ = of(1, 2, 3);
  • from: 将数组、类数组对象、Promise和Iterable转化为Observable对象。
import { from } from 'rxjs';

const source$ = from([1, 2, 3]);
  • interval: 创建一个发射无限递增整数序列的Observable,并以“interval”毫秒的时间间隔发送每个数字。
import { interval } from 'rxjs';

const source$ = interval(1000);
实例方法
  • map: 将源Observable中的每个值都映射到一个新的值。
import { from } from 'rxjs';
import { map } from 'rxjs/operators';

const source$ = from([1, 2, 3]).pipe(map(value => value * 2));
  • filter: 仅从源Observable中发出那些满足指定条件的值,该条件由一个指定的谓词函数定。
import { from } from 'rxjs';
import { filter } from 'rxjs/operators';

const source$ = from([1, 2, 3]).pipe(filter(value => value > 1));

通过使用这些方法,我们可以更加简单、直观地创建Observable对象,并且能够更方便地进行操作和管理。

结论

虽然Observable.create在某些情况下会有用,但在大多数情况下,使用RxJS提供的静态构造函数或实例方法是更好的选择。这些方法提供了一个更简单、更直观的API,能够更好地支持取消逻辑和防止内存泄漏。