Tengo algunas carpetas en Firebase Storage. Cada carpeta incluye un archivo 1_org_zoom.jpg. Puedo obtener esas fotos, pero no en el orden correcto. Quiero obtener esas fotos en un orden como el de la foto de abajo, pero las fotos se muestran aleatoriamente. Intenté for loop y forEach, pero no funcionó. ¿Hay alguna manera de conseguir estas fotos en un pedido?
useEffect(() => { /* for(let i = 0; i<products.length; i++){ const imgRef = ref(storage, imgFolderRef[i]); console.log(imgRef); getDownloadURL(imgRef) .then((url) => { console.log(url); }) } */ imgFolderRef.forEach((imgFolder) => { console.log(imgFolder); getDownloadURL(ref(storage, imgFolder)) .then((url) => { setExArr((oldArr) => [...oldArr, url]) }) }) }, [products]);
El nombre de la matriz es imgFolderRef.
El objetivo de las funciones asincrónicas no es bloquear la ejecución del script para que varias operaciones puedan ejecutarse simultáneamente.
En su caso getDownloadURL
y setExArr
son asincrónicos, por lo que no tiene ninguna garantía con respecto al orden de las imágenes. Lo que puedes hacer es ordenar explícitamente la matriz:
setExArr((oldArr) => [...oldArr, url].sort())