Al hacer clic en Enviar, envío una solicitud POST con algunos datos al servidor y, en respuesta, obtengo un objeto con identificación y tiempo de espera . Luego, necesito establecer el tiempo de espera y, cuando llegue el momento, enviar una solicitud GET para los datos. El problema es que los datos aún no están listos y no estoy definido y mi aplicación React falla.
Me dijeron que el tiempo de espera debería ser solo desde la primera solicitud (quiero decir que no puedo aumentarlo manualmente o hacer algo como esto: timeout * 2 , necesito usar el tiempo de espera solo desde la primera solicitud). ¿Cómo puedo hacer eso? Creo que se puede hacer de alguna manera con el bucle While... pero no soy lo suficientemente inteligente como para escribir este código. Por favor ayuda
const [someData, setSomeData] = useState({}) // here comes undefined and app crashes because this object renders in DOM const getData = async (id) => { const response = await fetch(`$BASE_URL/${id}`) setSomeData(response) } const onSubmit = async (data) => { const { id, timeout } = await fetch(url, data) setTimeOut(() => { getData(id) // data is not ready and I get undefined }, timeout) // its around 1000ms and I can't change it mannually }Si hago esto entonces todo funciona bien
const getData = async (id) => { const response = await fetch(`$BASE_URL/${id}`) setSomeData(response) } const onSubmit = async (data) => { const { id, timeout } = await fetch(url, data) setTimeOut(() => { getData(id) }, 6000) // if I manually specify timeout to 6000 }fetch devolverá una promesa, podrías usarla para getData.
const onSubmit = async (data) => { fetch(url, data) .then(res => return res.json()) .then(res => getData(res.id)) }