我试图获取多个图片的下载网址,然后触发我的应用中的更改。但是......如果其中一个图像由于某种原因而不存在,那么一切都会无声地失败。
以下是代码:
const promises = [];
snapshot.forEach(childSnapshot => {
const child = childSnapshot.val();
const promise = firebase.storage()
.ref(child.songImagePath)
.getDownloadURL()
.catch(err => {
console.log('caught', err);
return "";
})
.then(imageURL => {
return imageURL;
});
promises.push(promise);
});
Promise.all(promises)
.catch(err => {
console.log('caught', err);
})
.then(urls => {
...do something with urls array
});
我在数据库中使用child.songImagePath
将图片的位置存储在存储中。如果所有图像的所有路径都有图像,那么一切都很完美。
但是如果上传出错或由于某种原因在存储位置没有图片,则会无声地失败。我的catch
都没有发射。并且Promise.all
永远不会被解决。
这里发生了什么?有没有办法在调用getDownloadURL
之前检查文件是否存在?
.then(
imageURL => {
return imageURL;
},
err => {
console.log('caught', err);
return "";
}
);
答案 0 :(得分:0)
Firebase Storage JS dev。
我在Chrome和React Native中稍加修改[1]运行了您的代码,并没有看到这种行为。
我看到Promise.all总是解析(永远不会失败),数组中的空字符串表示无效文件。这是因为isprime-p
的{{1}}处理程序返回一个空字符串。
要进一步排查故障,了解一下会很有用:
firebase-talk Google群组往往更适合开放式故障排除,而且来回更多。
[1]作为参考,这是我的代码:
.catch