我正在使用基於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,從而創建一個承諾數組,然後等待。 –