Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
XiaoDan12202 opened this issue Sep 27, 2023 · 7 comments
Labels
common common question discussion discuss

Comments

@XiaoDan12202
Copy link

问题描述

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

复现步骤

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
@bailicangdu
Copy link
Member

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

@bailicangdu bailicangdu added common common question discussion discuss labels Sep 27, 2023
@XiaoDan12202
Copy link
Author

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

@bailicangdu
Copy link
Member

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

@XiaoDan12202
Copy link
Author

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

@codexu
Copy link

codexu commented Sep 27, 2023

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

@XiaoDan12202
Copy link
Author

要推不同的事件

@front-refined
Copy link

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
common common question discussion discuss
Projects
None yet
Development

No branches or pull requests

4 participants