我注意到可以将EventEmitter配置为异步发出事件。
constructor(isAsync: boolean = false)
创建一个EventEmitter实例,它依赖于isAsync,以同步或异步方式传递事件。
(摘自https://angular.io/api/core/EventEmitter)
我的组件什么时候应该异步传递事件而不是使用默认行为?
答案 0 :(得分:2)
当您使用isAsync
选项时,EventEmitter
发出的每个事件都会被setTimeout
包裹,使其异步。
摘自EventEmitter
源代码:
this.__isAsync ?
(value: any) => { setTimeout(() => generatorOrNext.next(value)); } :
(value: any) => { generatorOrNext.next(value); };
它增加了什么价值?可能没有。 区域检查将在您的代码收到事件之前进行,然后在您的事件处理完成后再次为CPU创建更多工作。从理论上讲,你可以在两者之间挤压一些自定义的东西,但即使是有角度的团队也不推荐它。
在此处详细了解推理:https://github.com/angular/angular/issues/6311
希望有所帮助