反应行动总是在解决所有承诺之前发送



我在react中有一个异步操作,它会调用一个方法来获得一个promise列表,每个promise也有一个列表数据,我想将这个promise列表中每个promise的所有数据解析为一个列表。应该有两个循环。然后用数据列表调度一个操作。在解析承诺列表之前,我初始化了一个空数组。但是,在将所有数据保存到此列表中之前,函数总是先显示空数组。有人能教我如何避免这种情况吗?谢谢

我的代码如下:

export const fetchNearbyMeetups = (lat, lng) => async(dispatch) => {
try {
const promises = await getMeetupsByRegion(lat, lng);
const matchingMeetups = [];
Promise.all(
promises.map(async(snapshots) => {
snapshots.then((snapshot) => {
snapshot.docs.map(((doc) => matchingMeetups.push(doc.data())));
});
}),
);
dispatch({
type: FETCH_NEARBY_MEETUPS,
payload: matchingMeetups,
});
} catch (err) {
dispatch({
type: FETCH_NEARBY_MEETUPS_ERR,
payload: null,
});
}

};

您可以尝试await Promise.all(

当你有一个异步结果列表时,你通常会做这样的事情:

Promise.all(
[1,2,3].map(asyncFunction)
).then(
asyncResults=>dispatch(someAction(asyncResults))
)

或者对于异步函数:

const asyncResults = await Promise.all(
[1,2,3].map(asyncFunction)
);
dispatch(someAction(asyncResults))

修改一个临时值在我看来是错误的。

尝试使用

等待承诺。所有(……(

相关内容

  • 没有找到相关文章

最新更新