我想使用React JS显示所有文件的列表及其从Firebase的下载URL。但是我不能这样做,因为有两个单独的函数来listing(listAll())
获取URL(getDownloadUrl()
)。
storageRef.listAll().then( res => {
const download = []
res.items.forEach( down => {
down.getDownloadURL().then( url => {
// res.items.forEach( item => {
download.push(url);
// console.log(url)
})
this.setState({ download: download})
})
})
storageRef.listAll().then( res => {
const listItem= []
res.items.forEach( item=> {
// res.items.forEach( item => {
itemList.push(url);
})
this.setState({ itemList: itemList})
})
})
如果我理解正确,则想将所有文件的下载URL添加到该状态。在这种情况下,您正在寻找Promise.all()
类似这样的东西:
storageRef.listAll().then( res => {
let promises = res.items.forEach( item => item.getDownloadURL() );
Promise.all(promises).then((downloadURLs) => {
this.setState({ download: downloadURLs });
});
})
如果您还想在状态中存储项目列表,则可以在同一回调中执行此操作:
storageRef.listAll().then( res => {
let promises = res.items.forEach( item => item.getDownloadURL() );
Promise.all(promises).then((downloadURLs) => {
this.setState({ download: downloadURLs, itemList: res.items });
});
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句