我在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))
修改一个临时值在我看来是错误的。
尝试使用
等待承诺。所有(……(