Quiero volver a intentar la llamada API POST cuando la solicitud API anterior falló debido a una caída de la API o una falla de Internet. Usé setInterval para lograr esa característica. Pero el problema al que me enfrento es que el temporizador setInternal se detiene si el usuario obliga a detener el cromo por completo.
En este caso, quiero iniciar automáticamente el reintento cada vez que el navegador se abra de nuevo. Cómo lograr eso. Intenté usar la sincronización periódica, pero solo funciona si instalo la aplicación. Sin instalar la aplicación, ¿cómo volver a intentar la llamada a la API? ¿Hay algún evento disponible en el trabajador de servicio para escuchar la apertura del navegador ?
Traté de lograrlo usando el evento periodicSync . Pero para usar esa función, los usuarios deben instalar nuestra aplicación web. Entonces, ¿hay alguna otra característica disponible como la sync que pueda usar sin instalar la aplicación para lograr el comportamiento deseado?
self.addEventListener('sync', function (e) { if (e.tag === SYNC_USERS) return handleSyncUsers(); }); async function handleSyncUsers() { const syncResult = await syncUsers(); const failedRequests = syncResult.filter( (res) => res.status === 'rejected' ); if (failedRequests.length) { return startPeriodicSync(); } else { return clearPeriodicSync(); } } const startPeriodicSync = () => { periodicSyncTimer = setInterval(handleSyncUsers, 5000); }; const clearPeriodicSync = () => { clearInterval(periodicSyncTimer); periodicSyncTimer = null; };