我正在尝试获取Firebase存储中的所有图像。到目前为止,它仍然有效。但是问题是如何将所有数据放入异步函数的数组中,而不仅仅是将其传递给状态?
我的代码:
async componentDidMount(){
auth().signInAnonymously();
var arr = [];
var storageRef = storage().ref("/madu_mubarak/");
await storageRef.listAll().then((result)=> {
result.items.forEach((imageItem) =>{
this.displayItem(imageItem)
});
}).catch(function(error) {
console.warn("error "+error);
});
}
async displayItem(imageItem){
var arr = [];
imageItem.getDownloadURL().
then((url) => {
console.warn("ur "+url)
arr.push(url);
this.setState({
isLoad: false,
urlImage: arr
})
}).catch((error) =>{
console.warn("error "+error);
});
// return await Promise.all(arr);
}
请帮助。谢谢
主要要点是这个
async componentDidMount(){
auth().signInAnonymously();
var storageRef = storage().ref("/madu_mubarak/");
await storageRef.listAll().then((result)=> {
let promises = result.items.map((imageItem) =>{
return imageItem.getDownloadURL()
});
Promise.all(promises).then(urls => this.setState({images: urls})
}
您想创建一个由getDownloadUrl返回的承诺的数组,并等待它们全部通过Primise.all解析。然后可以将结果分配给状态