Me pregunto si hay una forma en una aplicación Javascript/Angular de conectarse a un evento de 'solicitud enviada' emitido por el navegador inmediatamente después de que envía una solicitud. El propósito es que queremos asegurar/controlar el orden de las solicitudes que salen, y estábamos pensando en enviar cada una en respuesta a la anterior emitiendo un evento de 'solicitud enviada' (de esta manera aseguramos que las solicitudes más importantes salir primero). Queremos permitir que las solicitudes se ejecuten de forma asincrónica/simultánea para que no tengamos la opción de esperar a que regrese una solicitud antes de enviar la siguiente. Queremos enviar cada solicitud tan pronto como sepamos que la anterior se envió con éxito.
El desafío con esto es que el orden en que se envían las solicitudes en el código no coincide con el orden que vemos en la pestaña de red de Chrome, por lo que no podemos confiar en las secuencias de eventos que se ejecutan en el código para garantizar que el Se seguirá la misma secuencia cuando el navegador envíe las solicitudes.
Esta es la razón por la que sería realmente conveniente si pudiéramos conectarnos a un evento de 'solicitud enviada' disparado desde el navegador o algo por el estilo. Eso garantizaría que todas las solicitudes aún puedan salir de forma asíncrona y al mismo tiempo controlar el orden en que salen.
Gracias por cualquier ayuda próxima.
Si desea mantener el orden de las llamadas API, puede usar el operador switchMap .
digamos que tiene dos llamadas api:
const apiCall1$ = this.http.get("/endpoint1"); const apiCall2$ = this.http.get("/endpoint2");
y quiere esperar a que termine apiCall1 antes de enviar apiCall2, puede hacerlo así:
apiCall1$.pipe(switchMap(() => apiCall2$)).subscribe({ next: (response) => { //do something... } });