Reactjs 是否有一个Redux传奇像队列一样创建,并等待第一个Redux传奇生成器效果完成,然后从某个队列中获取下一个

Reactjs 是否有一个Redux传奇像队列一样创建,并等待第一个Redux传奇生成器效果完成,然后从某个队列中获取下一个,reactjs,redux,react-redux,queue,Reactjs,Redux,React Redux,Queue,我学习Redux初学者,并阅读了 以下是最常见的效果——我看不出如何按照自己的意愿构造代码 takeMaybe(channel) takeEvery(pattern, saga, ...args) takeEvery(channel, saga, ...args) takeLatest(pattern, saga, ..args) takeLatest(channel, saga, ..args) takeLeading(pattern, saga, ..args) 我读了一些关于这个问题的答

我学习Redux初学者,并阅读了

以下是最常见的效果——我看不出如何按照自己的意愿构造代码

takeMaybe(channel)
takeEvery(pattern, saga, ...args)
takeEvery(channel, saga, ...args)
takeLatest(pattern, saga, ..args)
takeLatest(channel, saga, ..args)
takeLeading(pattern, saga, ..args)
我读了一些关于这个问题的答案,但找不到解决办法。在我的例子中,我想让中间件Saga处理一系列文件,比如用户选择文件,Saga必须对每个文件进行一些检查,比如创建散列并连接Firestore以获取元数据。我希望这种情况按顺序发生,这样如果用户选择1000个文件,浏览器就不会崩溃

takeLatest将终止当前运行,因此无法运行,并且takeEvery将在任何文件上生成一个新线程

我如何在我的场景中解决这个问题?也许我必须创建自己的队列代码

这很容易做到

Have fileReducer:initialState={files:[],proccessingfile:false} 需要将文件添加到队列调度文件时,请使用文件数据添加操作,并将数据添加到fileReducer.files

使用函数中添加的takeEvery on FILE_查看proccessingfile是否为true,如果为true,则不执行任何操作,只返回。。如果为false,则启动您的上载过程以及所有。。一旦这样做了。。触发文件\u上载的操作

在上传的文件上使用takeEvery,删除上传的文件并检查文件数组是否为空。。如果为空,则返回或查看ProccessingFile是否为真,如果为真,则不执行任何操作,仅返回。。如果为false,则在完成后开始第一个元素的上载过程。。触发文件\u再次上载操作

此过程将继续,直到文件为空数组。。 事情是异步进行的,所以浏览器不会崩溃

注意:在takeEvery FILE_Uploaded中,我们正在检查proccesingFile是否为True,以确保我们不会同时上载多个文件

如果你认为有什么不清楚的地方,随时准备帮助你。

这很容易做到

Have fileReducer:initialState={files:[],proccessingfile:false} 需要将文件添加到队列调度文件时,请使用文件数据添加操作,并将数据添加到fileReducer.files

使用函数中添加的takeEvery on FILE_查看proccessingfile是否为true,如果为true,则不执行任何操作,只返回。。如果为false,则启动您的上载过程以及所有。。一旦这样做了。。触发文件\u上载的操作

在上传的文件上使用takeEvery,删除上传的文件并检查文件数组是否为空。。如果为空,则返回或查看ProccessingFile是否为真,如果为真,则不执行任何操作,仅返回。。如果为false,则在完成后开始第一个元素的上载过程。。触发文件\u再次上载操作

此过程将继续,直到文件为空数组。。 事情是异步进行的,所以浏览器不会崩溃

注意:在takeEvery FILE_Uploaded中,我们正在检查proccesingFile是否为True,以确保我们不会同时上载多个文件

如果你觉得有什么不清楚的,准备好帮助