gpt4 book ai didi

angular - Angular 的 @HostBinding( 'window:resize' ) 和 Rxjs 的 fromEvent( window, 'resize' ) 之间的区别

转载 作者:行者123 更新时间:2023-12-02 02:23:44 25 4
gpt4 key购买 nike

我只是想知道使用其中一种而不是另一种有什么优势。

@HostListener( 'window:resize' )
doSomething(): void {
// ...throttle with setTimeout and clearTimeout maybe...
}

fromEvent( window, 'resize' ).pipe(
// ... debounceTime, takeUntil etc.
).subscribe( () => {
doSomething();
})

这真的只是一个上下文问题(例如,使用 pipeline() 更容易处理事件流),还是可观察的更“现代”,或者根本不重要?

谢谢!

最佳答案

fromEvent 将为您提供执行和管道衬里方面的更大灵活性,以及​​在 NgZone 上下文之外进行绑定(bind)的可能性。

@HoSTListener 的一个优点是您不必在事件触发后手动触发更改检测。当您的组件使用 OnPush 更改检测策略(这是建议的(但不是默认)策略)时,您确实需要使用 Observables 来实现这一点。在其他情况下,您需要在使用 fromEvent 时执行此操作,但这些都是非常边缘的情况。

HostListener 的另一个优点是,当组件销毁时,您不需要取消订阅,因为这是自动完成的。

所以主要是关于偏好和背景。

广告有第三方libraries (我的)它扩展了 HostListener 和模板事件绑定(bind)内容,具有防抖和其他很酷的功能。

关于angular - Angular 的 @HostBinding( 'window:resize' ) 和 Rxjs 的 fromEvent( window, 'resize' ) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66029688/

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