Así que hice esta pequeña función de búsqueda en un proyecto de React para recorrer el objeto devuelto y darme un número de algo.
Estoy tratando de recuperar el valor de profileCount para acceder a él fuera de la función asíncrona.
¿Como podría hacerlo?
useEffect(() => { async function getProfiles() { try { const url = ''; let h = new Headers(); h.append('Accept', 'application/json'); let encoded = window.btoa('superuser:superuser'); let auth = 'Basic ' + encoded; h.append('Authorization', auth); const response = await fetch(url, { method: 'GET', mode: 'cors', headers: h, credentials: 'same-origin', }); const data = await response.json(); let results = data.results; let profileCount = 0; for (let key in results) { let innerObject = results[key]; for (let newKey in innerObject) { if (innerObject[newKey].indexOf('pages/ProfilePage') > -1) { profileCount += 1; return profileCount; } } } } catch (err) { console.log('test' + err); } } getProfiles(); }, []);Su código es bueno, simplemente reubique la declaración de return después de for .
for (let key in results) { let innerObject = results[key]; for (let newKey in innerObject) { if (innerObject[newKey].indexOf('pages/ProfilePage') > -1) { profileCount += 1; } } } return profileCount;El flujo de trabajo es el siguiente,
useEffect(async () => { async function getProfiles() {} const count = await getProfiles(); }, []);Pero puede que tenga que hacer esto para evitar la advertencia,
useEffect(() => { (async () => { let response = await fetch('api/data') })(); }, [])