在Redux中调度操作时出现异步/等待问题

wj8zmpe1  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(147)

我正在使用React和Redux进行一个项目,在连续调度多个操作时遇到了async/await问题,特别是我有一个函数joinCommumityHandler,它调度多个操作来加入一个社区,并检索与用户和社区相关的数据。我在VS代码中看到一个警告说“await对这种类型的表达式没有影响”。我想按顺序调度操作。使用.then()可以工作,但在使用async/await时显示警告。
有谁能帮我弄清楚我做错了什么,以及我该如何解决这个问题吗?在此预先感谢您的帮助。下面是函数

const handleJoinedCommunities = async () => {
    await dispatch(joinCommunityAction(communityName));
    await dispatch(getJoinedCommunitiesAction());
    await dispatch(getNotJoinedCommunitiesAction());
    if (userData) {
      await dispatch(getPostsAction(userData.id));
      await dispatch(getUserAction(userData.id));
    }
  };

  handleJoinedCommunities();
};
fcy6dtqo

fcy6dtqo1#

默认情况下,调度普通操作是100%同步的。
但是,分派返回承诺的thunk是很常见的,您 * 可以 * await dispatch(someAsyncThunk())

  • https://redux.js.org/tutorials/fundamentals/part-7-standard-patterns#thunks-and-promises

这里有两个可能的问题:

  • 您可能将await放在了正常操作的分派之前,而这是不需要的
  • 在分派一个异步thunk之前可能有await,但是如果你使用TypeScript,你可能没有声明thunk返回一个承诺,在这种情况下TS * 认为 * 它仍然是同步的。(如果你使用普通JS,这仍然适用,因为VS代码使用TS编译器来理解普通JS代码在做什么。)

因此,请仔细检查要分派的内容,如果要分派异步thunk,请使用await

相关问题