Pausar o aplicativo se a conexão de rede for perdida

Abaixo, uma pequena nota sobre como pausar a execução do seu aplicativo quando a conexão com a Internet estiver desconectada e continuar - quando será restaurada.

Imagine que seu aplicativo hipotético deve executar uma fila de solicitações http. Além disso, cada um dos seguintes depende do resultado do anterior.

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

Mas se no meio desse processo a conexão com a Internet desaparecer, a fila será interrompida. Vamos consertar.

Para começar, escrevemos uma função que retornará uma promessa que será resolvida quando o cliente retomar a conexão:

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

Agora adicione-o ao nosso 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 uma maneira tão simples, a cada iteração, nosso algoritmo verifica o status da rede e faz uma pausa se não houver conexão. E continuará automaticamente a execução do mesmo local assim que a conexão for restaurada.

Claro, isso não é uma panacéia. Mas um hack tão pequeno tornará seu aplicativo um pouco mais tolerante a falhas.

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


All Articles