使用takeUntil进行可观察的Angular销毁:ngOnDestroy中缺少.next()时会发生什么

贺拉斯

在Angular 7组件中,我使用RxJS takeUntil()适当地取消订阅可观察的订阅。

  • this.destroy$.next()方法中缺少时会发生什么ngOnDestroy(请参见下面的示例)?仍然可以正确取消订阅吗?
  • this.destroy$.complete()方法中缺少时会发生什么ngOnDestroy(请参见下面的示例)?仍然可以正确取消订阅吗?
  • 有什么方法可以正确使用带takeUntil()的模式来取消订阅(例如tslint规则,npm程序包)?

@Component({
    selector: 'app-flights',
    templateUrl: './flights.component.html'
})
export class FlightsComponent implements OnDestroy, OnInit {
    private readonly destroy$ = new Subject();

    public flights: FlightModel[];

    constructor(private readonly flightService: FlightService) { }

    ngOnInit() {
        this.flightService.getAll()
            .pipe(takeUntil(this.destroy$))
            .subscribe(flights => this.flights = flights);
    }

    ngOnDestroy() {
        this.destroy$.next();
        this.destroy$.complete();
    }
}
范翔
  1. takeUntil接下来是排放。如果只complete()叫它将不会退订

试试这个:

const a=new Subject();
interval(1000).pipe(takeUntil(a)).subscribe(console.log);
timer(3000).subscribe(_=>a.complete())
  1. this.destroy$ 仍然在内存中,不会收集垃圾
  2. 不是我知道

也请在这里看看,以避免使用时发生内存泄漏takeUntil

https://medium.com/angular-in-depth/rxjs-avoiding-takeuntil-leaks-fb5182d047ef

就我个人而言,我更喜欢unsubscribe在破坏时明确

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试使用Java捕获-发生异常时会发生什么?

来自分类Dev

在python中的str上使用encoding时会发生什么?

来自分类Dev

在AngularJS中删除ngRepeat使用的对象时会发生什么?

来自分类Dev

在元组/列表之间进行转换时会发生什么?

来自分类Dev

在R中进行评估时会发生什么?

来自分类Dev

当您从《虚无》中抽奖时会发生什么?

来自分类Dev

在lldb中打印Swift对象(po)时会发生什么?

来自分类Dev

VHDL中的整数超出范围时会发生什么?

来自分类Dev

当函数在python中返回自己的名称时会发生什么?

来自分类Dev

当软件包在源中重复时会发生什么?

来自分类Dev

当Final块中的代码引发异常时会发生什么?

来自分类Dev

在C ++标准中,当违反“应”要求时会发生什么?

来自分类Dev

在SVN中删除中继时会发生什么标记

来自分类Dev

在Git中删除分支时会发生什么情况

来自分类Dev

在RTOS中释放或发出信号时会发生什么?

来自分类Dev

当您在python中设置字典时会发生什么?

来自分类Dev

在SwiftUI中,显示操作表时会发生什么?

来自分类Dev

为什么在文件中写入csv时会发生错误?

来自分类Dev

当flet在递归函数中时会发生什么?

来自分类Dev

当声明符(我/州)在for块中时会发生什么?

来自分类Dev

当软件包在源中重复时会发生什么?

来自分类Dev

在浏览器中请求URL时会发生什么?

来自分类Dev

在tar中目录内容更改时会发生什么?

来自分类Dev

在SVN中删除中继时会发生什么标记

来自分类Dev

当“丢弃” APNS中的通知时会发生什么?

来自分类Dev

从字典中删除值(对象)时会发生什么?

来自分类Dev

当电池在 Ubuntu 18.04 中充满电时会发生什么?

来自分类Dev

在 C++ 中为对象赋值时会发生什么

来自分类Dev

当我使用多个模拟时间时会发生什么?

Related 相关文章

  1. 1

    尝试使用Java捕获-发生异常时会发生什么?

  2. 2

    在python中的str上使用encoding时会发生什么?

  3. 3

    在AngularJS中删除ngRepeat使用的对象时会发生什么?

  4. 4

    在元组/列表之间进行转换时会发生什么?

  5. 5

    在R中进行评估时会发生什么?

  6. 6

    当您从《虚无》中抽奖时会发生什么?

  7. 7

    在lldb中打印Swift对象(po)时会发生什么?

  8. 8

    VHDL中的整数超出范围时会发生什么?

  9. 9

    当函数在python中返回自己的名称时会发生什么?

  10. 10

    当软件包在源中重复时会发生什么?

  11. 11

    当Final块中的代码引发异常时会发生什么?

  12. 12

    在C ++标准中,当违反“应”要求时会发生什么?

  13. 13

    在SVN中删除中继时会发生什么标记

  14. 14

    在Git中删除分支时会发生什么情况

  15. 15

    在RTOS中释放或发出信号时会发生什么?

  16. 16

    当您在python中设置字典时会发生什么?

  17. 17

    在SwiftUI中,显示操作表时会发生什么?

  18. 18

    为什么在文件中写入csv时会发生错误?

  19. 19

    当flet在递归函数中时会发生什么?

  20. 20

    当声明符(我/州)在for块中时会发生什么?

  21. 21

    当软件包在源中重复时会发生什么?

  22. 22

    在浏览器中请求URL时会发生什么?

  23. 23

    在tar中目录内容更改时会发生什么?

  24. 24

    在SVN中删除中继时会发生什么标记

  25. 25

    当“丢弃” APNS中的通知时会发生什么?

  26. 26

    从字典中删除值(对象)时会发生什么?

  27. 27

    当电池在 Ubuntu 18.04 中充满电时会发生什么?

  28. 28

    在 C++ 中为对象赋值时会发生什么

  29. 29

    当我使用多个模拟时间时会发生什么?

热门标签

归档