Estoy tratando de acelerar un punto final y creo que tengo una idea sobre cómo hacerlo, sin embargo, no estoy totalmente seguro de si es posible o si vale la pena tratar de averiguarlo.
Esencialmente, lo que quiero hacer es devolver una promesa y luego, en función del código de estado 202 o 200, determinaré si se debe realizar la próxima solicitud o si se debe retrasar con algo como Promise.all(). La razón por la que quiero intentar hacer esto es porque al usar solo setTimeout solo puedo obtener un máximo de 50 solicitudes por segundo y estoy tratando de llevar eso a algo más cercano a 200 solicitudes por segundo.
Función de retraso actual para el punto final:
const delayQue = () =>{ if(count % 25 == 0 && count > 0){ setTimeout(delayQue,1000) assignVals(row) } else if(row < vals.length){ setTimeout(delayQue,50) assignVals(row) }else{ StepData(stepCol,stepVal,count) } row++ count++ }Por lo que puedo deducir, y corrígeme si me equivoco, ¿quieres hacer una solicitud web y esperar dependiendo del estado?
Está agregando cosas como retrasos de setTimeout en su pregunta, pero no proporciona ningún código de lo que está haciendo hasta ahora, por lo que es difícil entender qué es exactamente lo que está preguntando aquí.
Si está preguntando acerca de retrasar una nueva solicitud debido a una respuesta 202, puede devolver new Promise(resolve => setTimeout(resolve, 2500)); en su lugar y haga la solicitud web en la próxima promesa o algo así. Todo esto depende de la situación.
Solo voy a escribir una cadena de promesa simple de memoria (es posible que deba modificarse para que sea funcional) usando fetch .
fetch('myapi.com/resource') .then((response) => { if (response.status == 200) return Promise.resolve() // Immediately resolve a new promise and send it on. else if (response.status == 202) new Promise(resolve => setTimeout(resolve, 2500)) // Wait 2.5 seconds then resolve. }) .then(() => { // continue on with the next request. }) .catch((err) => console.log(err));