Estoy revisando una prueba de React y tengo un problema con la programación asíncrona.
Los requisitos son:
Se tarda 7 minutos en obtener una respuesta después de solicitar los datos. Pero, cuando la respuesta se retrasa durante 30 segundos, se producirá un error de tiempo de espera.
Verifique las especificaciones de la API, cumpla con estos requisitos:
Y la API es:
import { rest } from 'msw'; export function handlers() { return [ rest.get('/api/data', getData), rest.get('/api/data/progress', getDataProgress), ]; }; const getData = async (req, res, ctx) => { let wait = req.url.searchParams.get('wait'); if (wait !== 'no') { wait = 'yes'; } try { startNewGetData(); if (wait === 'yes') { await Promise.race([waitLastGetData, timeout(minutes(7)), timeoutError(minutes(0.5))]); } return res(ctx.status(200)); } catch { return res(ctx.status(500)); } }; const getDataProgress = (_, res, ctx) => { return res( ctx.status(200), ctx.json({ hasFinished: hasGetDataFinished, }) ); }; let waitLastGetData = undefined; let hasGetDataFinished = false; function startNewGetData() { hasGetDataFinished = false; waitLastGetData = new Promise(resolve => setTimeout(resolve, minutes(3))); waitLastGetData.then(() => (hasGetDataFinished = true)); }Ni siquiera sé qué debo tocar primero. Por favor, ¿podría decirme qué debo hacer para cumplir con esos requisitos?
Es posible que no entiendas bien mi inglés debido a mi inglés corto, lo siento.