React-Native firebase listAll().then()中的URL

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

我正在尝试将.then内部的所有URL推入imageHolder数组,并最终将数组从函数中返回,通常它可以正常工作,但是不能确定为什么,任何人都可以帮忙?

import storage from '@react-native-firebase/storage';

export const fetchProfilePicturesRequest = async () => {
  const reference = await storage()
    .ref(`{currentUser}/images`)
    .listAll();

  var imageHolder = [];

  reference.items.map(values => {
     values.getDownloadURL().then((urlValues) => {
      console.log('Holder now is ', imageHolder);
      imageHolder = imageHolder.concat(urlValues);
    });
  });

  return imageHolder;
};
url storage react-native-firebase
1个回答
0
投票

values.getDownloadURL()是异步函数,因此这就是为什么甚至在values.getDownloadURL()返回值之前都将调用return语句的原因,因此在这种情况下数组将为null。您需要在values.getDownloadURL()之前这样等待

import storage from '@react-native-firebase/storage';

export const fetchProfilePicturesRequest = async () => {
const reference = await storage()
.ref(`{currentUser}/images`)
.listAll();

var imageHolder = [];

reference.items.map( async values => {
 await values.getDownloadURL().then((urlValues) => {
  console.log('Holder now is ', imageHolder);
  imageHolder = imageHolder.concat(urlValues);
});
});

return imageHolder;
};

希望可以解决您的问题

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