إيقاف التطبيق مؤقتًا في حالة فقد اتصال الشبكة

تحت القصاص ، ملاحظة صغيرة حول كيفية إيقاف تنفيذ التطبيق الخاص بك عندما يتم قطع اتصال الإنترنت ومتابعة - متى سيتم استعادته.

تخيل أن تطبيقك الافتراضي يجب أن ينفذ قائمة انتظار لطلبات HTTP. علاوة على ذلك ، يعتمد كل ما يلي على نتيجة السابق.

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

ولكن إذا اختفى الاتصال بالإنترنت في منتصف هذه العملية ، فسيتم مقاطعة قائمة الانتظار. دعونا إصلاحه.

بادئ ذي بدء ، نكتب وظيفة من شأنها أن تعيد الوعد التي سيتم حلها عندما يستأنف العميل الاتصال:

 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/ar436426/


All Articles