在分派另一个动作之前如何等待redux动作完全分派?

时间:2020-01-05 02:54:44

标签: reactjs redux react-redux

随着我的应用程序的发展,现在会出现redux状态错误。这是因为在某些情况下,异步动作可能没有被完全调度,而其他动作在之前的动作完成之前被调度并完成。

是否有一种方法可以使操作等待上一操作完全分派?

分派的动作函数调用将发生在不同的函数上,甚至发生在不同的React组件上,因此诺言的动作形式不是解决方案。我需要可以管理redux调度的动作序列的东西,并且在需要时,我们可以将诸如isWaitToComplete参数的值传递给该动作,以便redux知道需要在分派另一个动作之前等待该特定动作。 / p>

3 个答案:

答案 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)

我遇到了同样的问题,我发现解决方案取决于模式的变化。

根据redux style guide

  1. 强烈建议分派由以下人员处理的操作 几个减速器。
  2. 强烈建议将逻辑放在化简器中。

遵循这些规则,应避免通过分配包含有效负载中所需的所有数据的操作,然后在化简器中对其进行处理来避免链接分配。这样,您就可以不再依赖于先前的更新。

希望我很清楚,希望对您有帮助