在异步功能React Native中将所有数据从Firebase存储放入阵列中

问题描述 投票:1回答:1

我正在尝试获取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);
    }

请帮助。谢谢

firebase react-native promise firebase-storage
1个回答
1
投票

主要要点是这个


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解析。然后可以将结果分配给状态

© www.soinside.com 2019 - 2024. All rights reserved.