gpt4 book ai didi

angular - 异步 EventEmitter 的正确用法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:53:50 28 4
gpt4 key购买 nike

我注意到 EventEmitter 可以配置为异步发出事件。

constructor(isAsync: boolean = false)
Creates an instance of EventEmitter, which depending on isAsync, delivers events synchronously or asynchronously.

(取自https://angular.io/api/core/EventEmitter)

我的组件什么时候应该异步传递事件而不是使用默认行为?

最佳答案

当您使用 isAsync 选项时,从 EventEmitter 发出的每个事件都会包装在 setTimeout 中,使其成为异步。

这是 EventEmitter 源代码的摘录:

this.__isAsync ? 
(value: any) => { setTimeout(() => generatorOrNext.next(value)); } :
(value: any) => { generatorOrNext.next(value); };

它能为您增加什么值(value)?可能没有。Zone 的检查将在您的代码接收事件之前进行,然后在您的事件处理完毕后再次检查,从而为 CPU 创造更多工作。从理论上讲,您可以在两者之间加入一些自定义内容,但即使是 Angular 团队也不推荐这样做。

在这里阅读更多关于推理的信息:https://github.com/angular/angular/issues/6311

希望对你有帮助

关于angular - 异步 EventEmitter 的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262414/

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