我正在使用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();
};
1条答案
按热度按时间fcy6dtqo1#
默认情况下,调度普通操作是100%同步的。
但是,分派返回承诺的thunk是很常见的,您 * 可以 *
await dispatch(someAsyncThunk())
:这里有两个可能的问题:
await
放在了正常操作的分派之前,而这是不需要的await
,但是如果你使用TypeScript,你可能没有声明thunk返回一个承诺,在这种情况下TS * 认为 * 它仍然是同步的。(如果你使用普通JS,这仍然适用,因为VS代码使用TS编译器来理解普通JS代码在做什么。)因此,请仔细检查要分派的内容,如果要分派异步thunk,请使用
await
。