随着我的应用程序的发展,现在会出现redux状态错误。这是因为在某些情况下,异步动作可能没有被完全调度,而其他动作在之前的动作完成之前被调度并完成。
是否有一种方法可以使操作等待上一操作完全分派?
分派的动作函数调用将发生在不同的函数上,甚至发生在不同的React组件上,因此诺言的动作形式不是解决方案。我需要可以管理redux调度的动作序列的东西,并且在需要时,我们可以将诸如isWaitToComplete
参数的值传递给该动作,以便redux知道需要在分派另一个动作之前等待该特定动作。 / p>
答案 0 :(得分:0)
与您一样,我的解决方案是在化简器中设置全局状态 isWaitToComplete ,然后将其更改为true或false,如果最后一个操作未完成,则不会执行下一个操作
答案 1 :(得分:0)
暂时,这就是我解决问题的方式:
def handle_client_request(command, params):
"""Create the response to the client, given the command is legal and params are OK
For example, return the list of filenames in a directory
Returns:
response: the requested data
"""
requests = {"TAKE_SCREENSHOT":create_screenshot_response,
"SEND_FILE":create_send_file_response,
"DIR":create_dir_response,
"DELETE":create_delete_response,
"COPY":create_copy_response,
"EXECUTE":create_execute_response,
"EXIT":create_exit_response}
# todo take params only if needed
# params could be path or empty
response = requests[command](params)
实际上,我希望redux本身具有中间件或内置功能来解决此问题。由于这是状态管理库的基本任务,因此在许多情况下都可能发生。如果您还有其他更清洁的解决方案,请在此处发布。
答案 2 :(得分:0)
我遇到了同样的问题,我发现解决方案取决于模式的变化。
遵循这些规则,应避免通过分配包含有效负载中所需的所有数据的操作,然后在化简器中对其进行处理来避免链接分配。这样,您就可以不再依赖于先前的更新。
希望我很清楚,希望对您有帮助