无法显示以正确顺序上传到Firebase商店的图像

时间:2019-09-05 15:36:49

标签: firebase vue.js firebase-storage

我有一个图库,通过从Firebase存储器获取图像的URL来显示图像。在存储中,它们被命名为(1.jpg,2.jpg,3.jpg等),我想按它们的名称对其进行排序。但是,每次我重新加载页面时,都会得到不同的顺序。有人可以帮我解决这个问题吗?

itemRef.sortBy('name')。getDownloadURL()无效 我还可以尝试在代码中添加什么来解决此问题?

created() {
    let storageRef = storage.ref();
    let listRef = storageRef.child('photos_main/');
    listRef.listAll().then(result => {
      result.items.forEach(itemRef => {
        itemRef.getDownloadURL().then(url => {
          this.items.push(url)
        }).catch(err => {
          console.log(err.message)
        })
      })
    }).catch(err => {
      console.log(err.message)
    });
  }

1 个答案:

答案 0 :(得分:0)

如果您想维持订单,我认为Promise.all()会有所帮助。

这是我要怎么做:

async created () {
   const imageNames = await this.getImageNames();
   const imageUrls = await Promise.all(
       imageNames.map(imageName => this.getDownloadURL(imageName))
   );

   console.log(imageUrls)
}

imageNames.map(imageName => this.getDownloadURL(imageName))将创建一个诺言数组。
承诺都将同时开始,但将按照出现的顺序得到解决。