因為抓檔案名字用forEach去抓,沒有固定的順序每次抓都會變動,
因此這邊就決定先抓名字之後再用名字去抓URL然後一起塞進MAP裡儲存,
然後依照MAP size去判斷之前是否抓過,如果抓過就直接讀取MAP裡儲存的內容,這樣就會固定一個順序了。
function load_data(){
var listRef = firebase.storage().ref(路徑);
var itemName;
if(nameMap.size == 0){
listRef.listAll().then((res) => {
res.items.forEach((itemRef) => {
itemRef.getMetadata().then((metadata) => {
itemName = metadata.name;
geturl(itemName); //讀URL
}).catch((error) => {
console.log(error);
});
});
}).catch((error) => {
console.log(error);
});
}
else{
nameMap.forEach((value, key) => {
//這邊放入直接讀取已有的map的code
})
}
}
function geturl(itemName){
var itemURL;
const listRef = firebase.storage().ref(路徑);
if(nameMap.size == 0){
listRef.child(itemName).getDownloadURL().then((url) => {
itemURL = url;
nameMap.set(itemName,itemURL);
}).catch((error) => {
console.log(error);
});
}else{
console.log("url failed");
}
}