我正在使用基于Firebase的反应制作网站。最近,我遇到了一些关于获取存储URL的问题。 以下是我的代码。如何在React和Firebase中承诺返回值?
(state, action) => {
const snapshot = action.payload;
const list = [];
snapshot.forEach((child) => {
list.push({
key: child.key,
user_bg_url: child.val().user_bg_url,
user_hp: child.val().user_hp,
user_id: child.val().user_id,
user_img_url: child.val().user_img_url,
user_login_yn: child.val().user_login_yn,
user_msg_block: child.val().user_msg_block,
user_token: child.val().user_token,
});
});
list.forEach(async (user) => {
await storage.getUserImage(user.user_img_url).then((url) => {
user.user_img_url = url;
});
})
return state.setIn(['users', 'list'], list);
}
getUserImage: (gs_url) => {
return storage.refFromURL(gs_url).getDownloadURL();
},
我想 'list.forEach' 的工作后返回值。但它只是在完成'list.forEach'之前返回空数组。
改为使用.map,从而创建一个承诺数组,然后等待。 –