مؤقت تنازلي
اضبط الساعات والدقائق والثواني، ابدأ العد التنازلي، واسمع صوت تنبيه واضحًا عند الوصول إلى الصفر — يعمل حتى في علامة تبويب بالخلفية.
1,049 مشاهدة
كيف يبقى العد التنازلي دقيقًا
عدّ تنازلي يطرح ببساطة ثانية واحدة من مجموع متراكم في كل مرة يُطلَق فيها setInterval يبدو بسيطًا، لكنه ليس دقيقًا مع مرور الوقت. تفترض كل نبضة أن 1000 ميلي ثانية بالضبط قد مرّت، إلا أن حلقة الأحداث في المتصفح قد تنشغل — بسكربتات أخرى، أو رسوم متحركة، أو علامة تبويب في الخلفية — فتُطلَق النبضات متأخرة ببضعة أجزاء من الألف من الثانية. تتراكم هذه التأخيرات الصغيرة إلى انحراف ملحوظ: مؤقت مدته 10 دقائق مبنيّ بهذه الطريقة قد ينتهي قبل أو بعد الموعد بعدة ثوانٍ عند وصوله إلى الصفر.
تتجنّب هذه الأداة هذه المشكلة بطريقة مختلفة: تحسب طابع وقت هدف ثابتًا لحظة ضغطك على "ابدأ" — الوقت الحالي زائد المدة التي اخترتها — وفي كل نبضة تسأل ببساطة كم تبقّى من الوقت حتى ذلك الهدف، بدلاً من العدّ التنازلي من مجموع متراكم. وبما أن الوقت المتبقي يُعاد حسابه دائمًا من قراءتين حقيقيتين للساعة، فإن أي تأخير متراكم في النبضات يُلغى تلقائيًا؛ يبقى الوقت المعروض صحيحًا حتى عندما تُطلَق نبضات فردية متأخرة.
ما يجدر معرفته
عندما تكون علامة التبويب التي تُوقِّت فيها في الخلفية، غالبًا ما تُقيّد المتصفحات المؤقتات لتوفير البطارية والمعالج، فتُطلقها بمعدل أقل مما هو مطلوب. يتعامل نهج طابع الوقت الهدف مع هذا بأناقة أيضًا: لا يهم كم عدد النبضات التي تم تخطيها، لأن العد التنازلي لا يزال يقارن وقت الهدف الحقيقي بالوقت الحالي الحقيقي في المرة التالية التي يعمل فيها — فيصل إلى الصفر في اللحظة الصحيحة بصرف النظر عن مدى تقييد علامة التبويب في تلك الأثناء.
- يُولَّد جرس التنبيه فوريًا باستخدام عقدة المذبذب (oscillator) في Web Audio API — لا حاجة لتحميل أي ملف صوتي، فلا يوجد أي تأخير قبل تشغيله.
- يتحدّث عنوان علامة تبويب المتصفح بالوقت المتبقي، فيمكنك النظر إلى علامة تبويب أخرى ورؤية العد التنازلي رغم ذلك.
- يحفظ الإيقاف المؤقت المدة المتبقية ويعيد حساب طابع وقت هدف جديد عند الاستئناف، لذا لا يُدخِل الإيقاف والاستئناف أي انحراف أيضًا.
الأسئلة الشائعة
هل سأسمع المنبه إذا كنت في علامة تبويب أخرى؟
نعم — يُشغَّل صوت التنبيه من علامة التبويب هذه بغضّ النظر عن العلامة النشطة، طالما بقيت علامة التبويب نفسها مفتوحة (غير مُغلَقة).
هل يتوقف العد التنازلي مؤقتًا إذا دخل الحاسوب المحمول في وضع السكون؟
يتوقف مع النظام، كما في أي مؤقت متصفح — عند إيقاظ الجهاز، إن كان الوقت المستهدف قد انقضى بالفعل، سيظهر صفرًا وينبّه فورًا.
هل يمكنني ضبط الساعات وليس الدقائق فقط؟
نعم — الساعات والدقائق والثواني متاحة جميعًا، فهو يعمل من منبه مدته عشر ثوانٍ إلى عد تنازلي لعدة ساعات.
لماذا يبقى المؤقت دقيقًا على مدد طويلة؟
لأنه لا يجمع النبضات الفردية إطلاقًا. يحسب طابع وقت هدف ثابتًا واحدًا لحظة ضغطك على "ابدأ" ويعيد حساب الهدف ناقص الآن في كل نبضة، لذا لا يؤثر أي تأخير في نبضة واحدة على النتيجة النهائية — يصل المؤقت رغم ذلك إلى الصفر في اللحظة الصحيحة تمامًا.
هل يُخلّ التقييد في علامة تبويب بالخلفية بالعد التنازلي؟
لا. تُبطئ المتصفحات المؤقتات في علامات التبويب غير النشطة لتوفير الطاقة، فقد تُطلَق النبضات بمعدل أقل، لكن بما أن كل نبضة تعيد حساب الوقت المتبقي من طابع الوقت الهدف الحقيقي بدلاً من عدّ النبضات المنقضية، فإن العد التنازلي يصل رغم ذلك إلى الصفر في اللحظة الواقعية الصحيحة.
أدوات مشابهة
الإبلاغ عن مشكلة
مؤقت تنازلي
التعليقات
لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!