Angular 与C++;智能指针

Angular 与C++;智能指针,angular,Angular,在我开始学习的过程中,我不断遇到类似“别忘了在Ngondestory中销毁X”这样的句子,其中X可能类似于订阅 C++中有智能指针(可能我已经过时15年了)。在Angular/Javascript中是否有任何等价物 所以这里 this.numberStream = obNumberStream.subscribe( .... 相反,您可以使用numberStreamPtr之类的函数,您可以引用numberStreamPtr().XXX之类的订阅函数,最重要的是,您不需要调用unsubscrib

在我开始学习的过程中,我不断遇到类似“别忘了在Ngondestory中销毁X”这样的句子,其中X可能类似于订阅

C++中有智能指针(可能我已经过时15年了)。在Angular/Javascript中是否有任何等价物

所以这里

this.numberStream = obNumberStream.subscribe(
....

相反,您可以使用numberStreamPtr之类的函数,您可以引用numberStreamPtr().XXX之类的订阅函数,最重要的是,您不需要调用unsubscribe,因为当调用组件destroy时,它会自动调用,主要是因为它是一种解释性语言<代码>可见物也不同于使用普通的旧对象,因为它们在内部负责破坏自身;在
可观察的
上调用
unsubscribe
,不会立即破坏它,它只是结束
订阅
。任何其他仍然签署的协议都将继续接受排放

但是,有几种使用模式使取消订阅更易于管理:

  • 根据,不需要取消订阅cold、finite Observable。cold表示Observable只有一个订户(并且不是“热的”)。有限意味着可观察对象发出一个值,然后完成。这些类型的可观察对象处理取消订阅并将自己完全销毁。Angular应用程序中最常见的例子是调用
    HttpClient
  • 任何向其订阅者发出
    OnError
    OnComplete
    通知的可观察对象也将处理取消订阅通知,不需要明确取消订阅
  • 具有多个观察者和较长生命周期的热
    观察者(如
    受试者
    )应取消订阅,以防止内存泄漏。但是,使用Angular的
    async
    管道自动在内部打开发射值以处理取消订阅通知。在可能的情况下尝试使用它是个好主意
  • 任何需要手动取消订阅的
    可观察对象
    都可以通过基类或mixin(即具有
    订阅方
    数组并在
    Ngondestory
    中自动取消订阅的基类,派生类将订阅添加到该数组中)优雅地处理

根据我对角度,
观测值
的经验,需要手动取消订阅的绝对是少数。我有点偏离了你最初的问题,但希望这对你有所帮助。

这里提到了许多方法:

但是如果您使用下面的包,那么您可以将此装饰器放置在组件上,使其自动发生

@AutoUnsubscribe

//这里还有一个简单/标准的可观测模式

可观察到的只是一种实体,还有其他实体,我在第一天,所以我期待更多