Emitter
是什么
Emitter主要提供发送和处理事件的能力,包括订阅事件(on)、发送事件(emit)、取消订阅(off)事件的功能。我们通过发送事件,来触发所有订阅的事件的执行。
适用场景
Emitter可以进行页面间,组件间,进程间,线程间进行数据传递
mindmap
Emitter
(订阅事件---emitter.on)
(发送事件---emitter.emit)
(取消订阅---emitter.off)
案例 头像上传显示上传进度
当我们在进行头像上传进度显示百分比就需要用到Emitter进行数据传递
效果展示
实现逻辑
- 计算出上传进度
- 发送事件emitter.emit将拿到的上传进度发送给订阅事件emitter.on
- 订阅事件将拿到的数据传递给message并渲染到页面
为什么不用组件传值
我们创建的弹窗是通过new出来的对象,并且我们在弹窗的同时传递数据,只能拿到第一次的数据,尽管使用监听器监听百分比变化也无法拿到变化的数据,无法实现动态渲染