是否有一个像队列一样创建的 Redux Saga,等到第一个 redux-saga 生成器效果完成,然后从某个队列中获取下一个
Is there a Redux Saga that creates like a queue and wait until first redux-saga generator effect is finished then get next from some queue
我学习 Redux(初学者)并且阅读了 Redux Saga
这是最常见的效果 - 我看不出如何按照我想要的方式构建我的代码。
takeMaybe(channel)
takeEvery(pattern, saga, ...args)
takeEvery(channel, saga, ...args)
takeLatest(pattern, saga, ..args)
takeLatest(channel, saga, ..args)
takeLeading(pattern, saga, ..args)
我阅读了一些 other 的答案,但找不到解决方案。在我的例子中,我想让中间件 Saga 处理一些文件,例如 User select 文件,并且 Saga 必须对每个文件进行一些检查,例如创建哈希并连接 Firestore 以获取元数据。我希望这按顺序发生,所以如果用户 select 1000 个文件浏览器不会崩溃。
takeLatest
杀死了当前的 运行,这样就不会起作用,takeEvery
会在每个文件上生成一个新线程。
在我的场景中如何解决这个问题?也许我必须创建自己的队列代码
这很容易做到
有fileReducer: initialState= {files:[], proccesingFile: false}
当您需要使用 file_data
将文件添加到队列调度 FILE_ADDED
操作并将数据添加到 fileReducer.files
在函数FILE_ADDED
上使用takeEvery
看看proccesingFile
是否是true
,如果是true
什么都不做return。 . 如果它是错误的,那么开始你的上传过程和所有.. 一旦完成.. 触发 FILE_UPLOADED
行动..
在 FILE_UPLOADED
上使用 takeEvery
,删除上传的文件并检查文件数组是否为空。如果它为空,只需 return 否则查看 proccesingFile
是 true
,如果是 true
什么都不做 return.. 如果它是假的,那么在完成后开始第一个元素的上传过程.. 再次触发 FILE_UPLOADED
操作..
This process will continue till files
is empty array..
Things go asynchronously so the browser don't crumble
Note : in takeEvery
FILE_UPLOADED
we are checking if proccesingFile
is true
just to make sure we are not uploading multiple files at once..
如果您觉得有什么不清楚的地方,随时准备提供帮助..
我学习 Redux(初学者)并且阅读了 Redux Saga
这是最常见的效果 - 我看不出如何按照我想要的方式构建我的代码。
takeMaybe(channel)
takeEvery(pattern, saga, ...args)
takeEvery(channel, saga, ...args)
takeLatest(pattern, saga, ..args)
takeLatest(channel, saga, ..args)
takeLeading(pattern, saga, ..args)
我阅读了一些 other 的答案,但找不到解决方案。在我的例子中,我想让中间件 Saga 处理一些文件,例如 User select 文件,并且 Saga 必须对每个文件进行一些检查,例如创建哈希并连接 Firestore 以获取元数据。我希望这按顺序发生,所以如果用户 select 1000 个文件浏览器不会崩溃。
takeLatest
杀死了当前的 运行,这样就不会起作用,takeEvery
会在每个文件上生成一个新线程。
在我的场景中如何解决这个问题?也许我必须创建自己的队列代码
这很容易做到
有fileReducer: initialState= {files:[], proccesingFile: false}
当您需要使用 file_data
将文件添加到队列调度 FILE_ADDED
操作并将数据添加到 fileReducer.files
在函数FILE_ADDED
上使用takeEvery
看看proccesingFile
是否是true
,如果是true
什么都不做return。 . 如果它是错误的,那么开始你的上传过程和所有.. 一旦完成.. 触发 FILE_UPLOADED
行动..
在 FILE_UPLOADED
上使用 takeEvery
,删除上传的文件并检查文件数组是否为空。如果它为空,只需 return 否则查看 proccesingFile
是 true
,如果是 true
什么都不做 return.. 如果它是假的,那么在完成后开始第一个元素的上传过程.. 再次触发 FILE_UPLOADED
操作..
This process will continue till
files
is empty array.. Things go asynchronously so the browser don't crumble
Note : in
takeEvery
FILE_UPLOADED
we are checking ifproccesingFile
istrue
just to make sure we are not uploading multiple files at once..
如果您觉得有什么不清楚的地方,随时准备提供帮助..