gpt4 book ai didi

angular - rxjs Subject.create 已弃用 - 我应该使用什么代替?

转载 作者:行者123 更新时间:2023-12-03 23:13:01 24 4
gpt4 key购买 nike

我的 Angular 应用程序的服务中有此代码:

const subby = Subject.create(observer, observable)
但是我的 IDE 正确标记了 Subject.create已弃用。我应该用什么代替谢谢?我试过 new Subject(observer, observable)但没有快乐。 TIA。

RxJS version: 6.4.0

Angular version: 7.2

最佳答案

查看源码,静态函数Subject.create(destination, source)只是 new AnonymousSubject<T>(destination, source) 的包装器.

如果您只是想处理警告,则可以将代码更改为

import { AnonymousSubject } from 'rxjs/internal/Subject';

const subby = new AnonymousSubject<T>(observer, observable);

RxJs 记录了他们进行此更改的动机 here .重要报价:

Subject.create doesn't actually create a Subject, but rather an AnonymousSubject, which I would REALLY like to rename as FrankenSubject because that describes what it is, you basically glue an Observer to an Observable and call it a "Subject".



简而言之,使用 Subject.create (或 AnonymousSubject 对象)是实现目标的一种令人困惑的方式。

你可以看这个类的源码 here ,但要点是它是一个毫无意义的类,它混淆了正在发生的事情。在代码中,可以看到 destinationsource ( ObserverObservable 参数)没有交互作用。

因此,修复代码的“正确方法”是完全谋杀这个对象,并更明确地说明相关事件的路由方式。

例如:
// This code...
const subby = Subject.create(observer, observable);
subby.subscribe((value: value) => console.log(value));
subby.next("Test");

// Should be replace by this code
// Nothing
observable.subscribe((value: value) => console.log(value));
observer.next("Test");

我还发现以下有关使用 Subject.create 的警告这可能与 future 的读者相关:
  • Subjects created with Subject.create can't unsubscribe
  • Subject Subscribe method not working as expected
  • 关于angular - rxjs Subject.create 已弃用 - 我应该使用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551870/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com