Javascript 我无法返回数组中的图像
我从firebase中提取图像并放置它们,但在函数结束时没有成功Javascript 我无法返回数组中的图像,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我从firebase中提取图像并放置它们,但在函数结束时没有成功 export const saveImages = async (images) => { let imgs = []; try { images.forEach(image => { const imgRef = storage.ref(`Works_Realized/Images/${image.name}`).put(image);
export const saveImages = async (images) => {
let imgs = [];
try {
images.forEach(image => {
const imgRef = storage.ref(`Works_Realized/Images/${image.name}`).put(image);
imgRef.on(
"state_changed",
snapshot => { },
err => {
console.log(err);
},
() => {
storage
.ref('Works_Realized/Images')
.child(image.name)
.getDownloadURL()
.then(imgUrl => {
imgs = [...imgs, { name: image.name, url: imgUrl }];
// imgs.push({ name: image.name, url: imgUrl });
// console.log(imgs);
})
}
);
});
if (imgs.length > 0) {
return imgs;
} else {
return [];
}
} catch (e) {
Swal.fire('Error', e.message, 'error');
}
}
请有人帮忙,我必须返回一个带有de url图像的数组。欢迎使用堆栈溢出,本例中的问题是您正在使用承诺获取下载url,但在此之前您将返回imgs数组。在本例中,您可以将每个图像映射到一个promise,并等待promise.all解析所有图像,从而得到预期的数组。如果你不明白承诺,我建议你看。这是修改过的代码
export const saveImages=async(图像)=>{
试一试{
const imgs=wait images.map(异步(图像)=>{
const imgRef=storage.ref(`Works\u/Images/${image.name}`).put(image);
伊姆格雷夫(
“状态已更改”,
快照=>{},
错误=>{
控制台日志(err);
},
() => {
const imgUrl=等待存储
.ref(“作品/图像”)
.child(image.name)
.getDownloadURL();
返回{name:image.name,url:imgUrl}
}
);
});
如果(imgs.length>0){
返回imgs;
}否则{
返回[];
}
}捕获(e){
Swal.fire('Error',例如message,'Error');
}
}
欢迎使用stack overflow,本例中的问题是您正在使用Promissions获取下载URL,但在此之前您将返回imgs数组。在本例中,您可以将每个图像映射到一个promise,并等待promise.all解析所有图像,从而得到预期的数组。如果你不明白承诺,我建议你看。这是修改过的代码
export const saveImages=async(图像)=>{
试一试{
const imgs=wait images.map(异步(图像)=>{
const imgRef=storage.ref(`Works\u/Images/${image.name}`).put(image);
伊姆格雷夫(
“状态已更改”,
快照=>{},
错误=>{
控制台日志(err);
},
() => {
const imgUrl=等待存储
.ref(“作品/图像”)
.child(image.name)
.getDownloadURL();
返回{name:image.name,url:imgUrl}
}
);
});
如果(imgs.length>0){
返回imgs;
}否则{
返回[];
}
}捕获(e){
Swal.fire('Error',例如message,'Error');
}
}
谢谢各位,我了解解决方案谢谢各位,我了解解决方案