micro-app icon indicating copy to clipboard operation
micro-app copied to clipboard

基座应用给某个子应用连续发送两次数据,子应用只能监听到一个

Open XiaoDan12202 opened this issue 2 years ago • 7 comments

问题描述

基座应用给某个子应用连续发送两次数据,子应用只能监听到一个

复现步骤

1.基座应用通过microApp.setData('appA', { type: 'closeApp', data: { app: 'aaa' } }) 之后再调一个microApp.setData('appA', { type: 'openApp', data: { app: 'bbb' } })

  1. 子应用appA中addEventListener只监听到一次type为openApp的事件

上传截图

经初步调试发现,eventList为一个map,同一个子应用的参数被替换了 image 执行事件是在promise.then里面执行的 image

环境信息

  • micro-app版本:1.0.0-rc.0

XiaoDan12202 avatar Sep 27 '23 03:09 XiaoDan12202

数据操作是异步的,同时间的多次操作会合并为一次,这和react setState一样

bailicangdu avatar Sep 27 '23 03:09 bailicangdu

嗯,可以加个同步的机制吗,或者你们那个map里的value改为list,执行的时候把list的都执行一遍而不是直接就替换了?因为有这种场景,参数又只能是对象,对象又被合并了,好像也没法通过传参告诉子应用要执行两个事件

XiaoDan12202 avatar Sep 27 '23 03:09 XiaoDan12202

可以在第一个数据发送结束后再发送第二个 image

bailicangdu avatar Sep 27 '23 03:09 bailicangdu

如果我要发送得多了一下,不就成回调地狱了?

XiaoDan12202 avatar Sep 27 '23 03:09 XiaoDan12202

同步连续推数据有什么意义嘛?

codexu avatar Sep 27 '23 05:09 codexu

要推不同的事件

XiaoDan12202 avatar Sep 27 '23 06:09 XiaoDan12202

我有点好奇,问下作者大佬,我个人感觉 micro-app 事件总线处理可以参考 mitt ,不用搞得那么严格。因为大多数业务场景我们不是要推数据(1.0还处理了合并数据=。=),而是要触发事件,然后基座/子应用分别对事件进行处理。

又或者我可以在基座 window 上挂 mitt 吗,这样有什么弊端吗,有这块疑问的欢迎一起讨论哈

refinist avatar Mar 22 '24 10:03 refinist