Pausa la aplicación si se pierde la conexión de red

Debajo del corte, una pequeña nota sobre cómo pausar la ejecución de su aplicación cuando la conexión a Internet se desconecta y continuar, cuando se restablezca.

Imagine que su aplicación hipotética debería ejecutar una cola de solicitudes http. Además, cada siguiente depende del resultado del anterior.

async function main () { let url = ' ... ' while (url) { const resp = await fetch(url) const json = await resp.json() url = json.url } } 

Pero si en medio de este proceso la conexión a Internet desaparece, la cola se interrumpirá. Vamos a arreglarlo

Para comenzar, escribimos una función que devolverá una promesa que se resolverá cuando el cliente reanude la conexión:

 function awaitOnline () { return new Promise(resolve => { //    online —    if (navigator.onLine) { resolve() return } //          online window.addEventListener( 'online', () => resolve(), {once: true} //       ) }) } 

Ahora agrégalo a nuestro código principal

 async function main () { let url = ' ... ' while (url) { await awaitOnline() //          const resp = await fetch(url) const json = await resp.json() url = json.url } } 

De manera tan simple, en cada iteración, nuestro algoritmo verificará el estado de la red y se detendrá si no hay conexión. Y continuará automáticamente la ejecución desde el mismo lugar tan pronto como se restablezca la conexión.

Por supuesto, esto no es una panacea. Pero un truco tan pequeño hará que su aplicación sea un poco más tolerante a fallas.

Source: https://habr.com/ru/post/es436426/


All Articles