Un usuario puede cambiar rutas o filtros mientras una solicitud anterior aún está en curso. Si la respuesta anterior llega en último lugar, es posible que sobrescriba los datos de la vista actual.

Vincular la solicitud a la vista

const controller = new AbortController();
fetch(url, { signal: controller.signal });

// When this view is replaced:
controller.abort();
  • Cree un controlador para la solicitud o vista propietaria del resultado.
  • Cancele cuando se elimine la vista o cambie el término de búsqueda relevante.
  • Trate un aborto como una cancelación esperada, no como un error del servidor para volver a intentarlo.

Proteja también las actualizaciones de estado

Es posible que la cancelación no detenga todas las operaciones después de que haya llegado una respuesta. Compruebe que el resultado todavía pertenezca a la solicitud activa antes de enviarla al estado compartido.

Pruebe una primera solicitud lenta seguida de una segunda solicitud más rápida. La pantalla final debe reflejar la vista actual y la cancelación no debe mostrar un mensaje de error engañoso.