gpt4 book ai didi

angular - 异步 EventEmitter 的用例

转载 作者:太空狗 更新时间:2023-10-29 17:58:11 26 4
gpt4 key购买 nike

我注意到可以在 Angular 中创建同步或异步 EventEmitter。据我所知,默认是同步。

https://github.com/angular/angular/blob/master/packages/core/src/event_emitter.ts

据我所知,sync 意味着事件处理程序(generatorOrNext、error 和 complete)在与事件生成相同的变化检测周期中执行,而 async 意味着事件处理程序在另一个变化检测周期(因为处理程序被包装在触发变化检测的 setTimeout 方法中)。

我想不出异步行为是优势的具体用例(可能是一些与性能相关的用例)?也许有人可以给我一个简短的具体用例?

最佳答案

我认为你是对的,因为当你在异步模式下调用 .emit() 时,它会:

 1. Set up timeout inside event emitter (but nothing would be emitted).
2. Your current zone context turn ends, angular change detection happens.
3. Timeout's callback in event emitter triggers, which emits value and calls all subscribers of current event emitter.
4. And after all subscribers have been called, it runs change detection again.

所以不同之处在于,如果您使用同步事件发射器,您将不会在调用 emit() 和正在执行的订阅者之间进行更改检测,这在某些情况下可能很重要,因为例如,您希望在调用事件发射器订阅者处理程序之前更新您的 @Inputs。希望这有意义。

关于angular - 异步 EventEmitter 的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386818/

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