我的 Angular 应用程序的服务中有以下代码:
const subby = Subject.create(observer, observable)
Run Code Online (Sandbox Code Playgroud)
但我的 IDE 正确标记Subject.create为已弃用。我应该用什么代替谢谢?我尝试过new Subject(observer, observable),但没有快乐。TIA。
RxJS版本:6.4.0
角度版本:7.2
查看源代码,静态函数Subject.create(destination, source)只是new AnonymousSubject<T>(destination, source).
如果您只是想处理警告,可以将代码更改为
import { AnonymousSubject } from 'rxjs/internal/Subject';
const subby = new AnonymousSubject<T>(observer, observable);
Run Code Online (Sandbox Code Playgroud)
RxJs 已在此处记录了他们进行此更改的动机。重要的引言:
subject.create实际上并没有创建一个Subject,而是一个AnonymousSubject,我真的很想将其重命名为FrankenSubject,因为它描述了它是什么,你基本上将一个观察者粘合到一个可观察的对象上,并将其称为“主题”。
简而言之,使用Subject.create(或AnonymousSubject对象)是实现目标的一种令人困惑的方式。
您可以在此处查看此类的源代码,但要点是它是一个毫无意义的类,它混淆了正在发生的事情。在代码中,您可以看到destinationand source(Observer和Observable参数)没有交互。
因此,修复代码的“正确方法”是完全删除该对象,并更明确地说明相关事件的路由方式。
例如:
// 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");
Run Code Online (Sandbox Code Playgroud)
我还发现以下有关使用的警告Subject.create可能与未来的读者相关:
| 归档时间: |
|
| 查看次数: |
6264 次 |
| 最近记录: |