我正在尝试将.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;
};
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;
};
希望可以解决您的问题