我知道这已经被询问了无数次。我自己问过具体到下面的代码,我不知道为什么无法解决。
const householdPics = (data,props) => {
let refImg;
async function refDetails() {
let urlResult;
const ref = await props.firebase.storageRef(`images/${data.profilePic}`);
return urlResult = new Promise((resolve,reject) => {
ref.getDownloadURL()
.then(url => resolve(url))
.catch(e => reject(e))
})
}
if (!data.profilePic || data.profilePic == 'NULL') {
refImg = require("../../assets/img/empty-avatar.png");
} else {
refImg = refDetails();
}
我确定我已经使这个问题复杂化了,一直以来我都感到困惑。
我希望refImg = refDetails();
可以解析为网址。
如果我console.log urlResult
,我会从firebase获得img网址。
但是,当我在另一个代码块中使用refImg时:
src显示为“对象承诺”
我也尝试过:
async function refDetails() {
const ref = await props.firebase.storageRef(`images/${data.profilePic}`);
const refUrl = await ref.getDownloadURL();
return refUrl;
}
这是我在阅读了更多内容之后尝试的另一种尝试。仍然失败:(
let refImg;
function refDetails() {
const ref = props.firebase.storageRef(`images/${data.profilePic}`);
const imgUrl = ref.getDownloadURL()
return imgUrl.then(url => {return url})
}
if (!data.profilePic || data.profilePic == 'NULL') {
refImg = require("../../assets/img/empty-avatar.png");
} else {
const resultImg = refDetails();;
refImg = resultImg;
}
如何将ref.getDownloadURL()的返回值传递给refImg?