DEV Community

Gersom Hernandez Ramos
Gersom Hernandez Ramos

Posted on

¿Qué pasa cuando el switchMap no es suficiente?

En el desarrollo mobile (Ionic + Angular), solemos confiar en RxJS para encadenar peticiones. Todo funciona genial con switchMap hasta que entra en juego el mundo real: la falta de conexión.

Recientemente tuve que implementar un flujo crítico para ventas:
1️⃣ Crear ticket.
2️⃣ Obtener geolocalización.
3️⃣ Actualizar ticket con GPS.
4️⃣ Crear registro de prospecto.

El problema: Si el internet fallaba en el paso 3, terminábamos con datos huérfanos y procesos duplicados al reintentar. El switchMap moría con la suscripción.

La solución: Un Orquestador Offline con SQLite. 💡

En lugar de disparar y rezar, implementé una estrategia de Cola con Checkpoints:

Persistencia Local: Creé un servicio QueueLeads en SQLite. Cada paso del proceso se guarda localmente con un estado.

Orquestador de Estados: Un servicio que actúa como máquina de estados. No procesa todo en un for (porque los Observables son asíncronos), sino que toma el último registro pendiente, revisa en qué paso se quedó y lo retoma.

Resiliencia: Si la app se cierra o se pierde la señal, el orquestador se reinicia en cuanto hay conexión, leyendo la base de datos y continuando exactamente donde falló.

Resultado: Eliminamos el 100% de los datos duplicados y aseguramos que cada venta se registre, sin importar si el vendedor está en un sótano sin señal.

A veces, la mejor decisión técnica no es usar el operador más complejo de RxJS, sino dar un paso atrás y asegurar la integridad de los datos en el disco.

¿Alguna vez te ha tocado lidiar con flujos offline complejos? Te leo en los comentarios. 👇

Top comments (1)

Collapse
 
martijn_assie_12a2d3b1833 profile image
Martijn Assie

Excelente solución!! La persistencia local con checkpoints es clave cuando el internet no es confiable, así evitas datos perdidos y duplicados!!