الدرس 5 من 8

تقنين النداءات

هدف الدرس

نداء واحد في كل مهلة

01

الشرح

حدث mousemove أو scroll يقع عشرات المرّات في الثانية. والكبح لا يناسبه: ما دامت الحركة مستمرّة فلا تنفيذ، فيتجمّد كل ما يتبع المؤشّر حتى تتوقّف اليد.

التقنين يضمن إيقاعًا ثابتًا: ينفّذ أول نداء فورًا، ثم يتجاهل كل نداء حتى تمضي المهلة. حركة ثانيتين تطلق نحو مئة وعشرين حدثًا، وبمهلة 100 جزء من الثانية تنفّذ نحو عشرين.

انتبه: ما يقع داخل المهلة يُهمَل، ومنه آخر حدث. فإن كانت القيمة الأخيرة تهمّك — موضع التمرير النهائي مثلًا — فأضف نداءً ختاميًّا بعد المهلة، كما يفعل throttle في مكتبة lodash.

02

المطلوب

اكتب throttle(fn, ms) تنفّذ أول نداء فورًا بوسائطه، ولا تنفّذ أكثر من مرّة في كل ms. ثم اربط حدث mousemove على #pad بـ throttle(track, 100).

معايير التصحيح

6 معايير
  1. throttle تُرجع دالة
  2. أول نداء ينفّذ فورًا بوسائطه
  3. دفعة داخل المهلة تعطي تنفيذًا واحدًا
  4. بعد المهلة يُقبل نداء جديد
  5. الحركة المتواصلة تنفّذ بإيقاع منتظم
  6. اللوح مربوط بالنسخة المقنّنة
index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل» ليبدأ الفحص.

6 معايير في بطاقة «المطلوب».