我注意到 EventEmitter 可以配置为异步发出事件。
constructor(isAsync: boolean = false)
创建一个 EventEmitter 实例,它依赖于 isAsync,同步或异步传递事件。
(取自https://angular.io/api/core/EventEmitter)
我的组件何时应该异步传递事件而不是使用默认行为?
Mir*_*nas 11
当您使用该isAsync
选项时,从发出的每个事件EventEmitter
都会被包裹起来setTimeout
使其异步。
这是EventEmitter
源代码的摘录:
this.__isAsync ?
(value: any) => { setTimeout(() => generatorOrNext.next(value)); } :
(value: any) => { generatorOrNext.next(value); };
Run Code Online (Sandbox Code Playgroud)
它给你增加了什么价值?可能没有。Zone 的检查将在您的代码接收事件之前进行,然后在您的事件处理完毕后再次检查,为 CPU 创造更多工作。理论上你可以在两者之间挤一些自定义的东西,但即使是 angular team 也不推荐它。
在此处阅读有关推理的更多信息:https : //github.com/angular/angular/issues/6311
希望有帮助
归档时间: |
|
查看次数: |
4460 次 |
最近记录: |