Jeda aplikasi jika koneksi jaringan terputus

Di bawah potongan, catatan kecil tentang cara menjeda eksekusi aplikasi Anda ketika koneksi Internet terputus dan melanjutkan - ketika akan dipulihkan.

Bayangkan bahwa aplikasi hipotetis Anda harus menjalankan antrian permintaan http. Selain itu, masing-masing mengikuti tergantung pada hasil yang sebelumnya.

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

Tetapi jika di tengah proses ini koneksi ke Internet menghilang, maka antrian akan terputus. Mari kita perbaiki.

Untuk memulainya, kami menulis fungsi yang akan mengembalikan janji yang akan diselesaikan ketika klien melanjutkan koneksi:

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

Sekarang tambahkan ke kode utama kami

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

Sedemikian sederhana, pada setiap iterasi, algoritma kami akan memeriksa status jaringan, dan akan berhenti jika tidak ada koneksi. Dan itu akan secara otomatis melanjutkan eksekusi dari tempat yang sama segera setelah koneksi dipulihkan.

Tentu saja, ini bukan obat mujarab. Tapi peretasan kecil seperti itu akan membuat aplikasi Anda sedikit lebih toleran terhadap kesalahan.

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


All Articles