如果网络连接丢失,则暂停应用程序

切下一个小注释,说明在断开Internet连接时如何暂停应用程序的执行并在恢复连接时继续执行。

假设您的假设应用程序应该执行http请求队列。 而且,每个后续操作都取决于前一个的结果。

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

但是,如果在此过程中与Internet的连接消失,则队列将被中断。 让我们修复它。

首先,我们编写一个函数,该函数将返回一个promise,该promise将在客户端恢复连接时得到解决:

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

现在将其添加到我们的主代码中

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

以这种简单的方式,在每次迭代时,我们的算法都会检查网络状态,如果没有连接,则会暂停。 恢复连接后,它将自动从同一位置继续执行。

当然,这不是万能药。 但是,如此小的漏洞将使您的应用程序更具容错能力。

Source: https://habr.com/ru/post/zh-CN436426/


All Articles