需求大概是这样滴
有一个界面,有一颗树,显示各种节点。用户可以点击 /右键任意一个节点,添加 /删除或者重命名,或者选择某节点后,显示一个面板,然后修改属性,等等。
但是,任意操作后,需要对应修改同一个文件,然后该文件会上传到服务器上(这个操作需要 3~5 秒,比较费时)
但是,“被要求”,每次修改后,立即执行文件保存并上传的操作(添加一个“保存”按钮,等都修改完成后,再保存提交它不香么?)。这样的话,用户每次操作,都要等待 5 秒,才能执行下一步操作。还不让我们把界面上的菜单灰掉(本来想操作没有执行完,菜单就灰掉,暗示 /强制 用户,现在不能操作)
所以,问题来了。现在我想使用一个 queue ,有点类似 message queue ,只是这个是本地的(有点像生产 /消费模型)。用户只管在界面上操作,每次动作类型和修改的数据,都添加到这个 queue 里面去。然后,monitor 这个 queue ,有内容了,就取一条,执行操作,保存,上传。然后再去 queue 里面取一条,blabla...
不知道有没有成熟的 npm package 做这个?还是说,只能再造一个轮子?或者,大家有什么想法?
谢谢
p.s.1
好像 saga 里面有个 event channel ,是类似这样的。我们的环境里面本来就使用了 redux/redux-saga
可以试试每次用户的操作,emmit 一个消息到这个 channel ,然后这个 channel 里面,循环监听,处理消息,上传文件。
p.s.2
react + typescript + redux + redux-saga
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.