الدرس 2 من 8
تأجيل الاستدعاء (debounce)
- 14 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
استدعاء واحد بعد أن يتوقّف المستخدم
الشرح
حقل البحث الذي يرسل طلبًا مع كل حرف يرسل عشرة طلبات لكلمة واحدة، تسعة منها بلا فائدة، وقد يصل ردّ الطلب الأخير قبل ردّ الذي قبله، فتظهر في النهاية نتيجة قديمة.
والتأجيل (debounce) يؤخّر التنفيذ حتى يتوقّف المستخدم، إذ يلغي كل استدعاء جديد المؤقّت السابق ويبدأ مؤقّتًا جديدًا، ولذلك لا تُنفَّذ الدالة إلا بعد مرور المهلة من آخر استدعاء.
وهو نمط لا يتجاوز بضعة أسطر، لكنه من أكثر الأنماط استعمالًا في الواجهات.
المطلوب
اكتب debounce(fn, ms) لتُرجع نسخة مؤجَّلة من fn تمرّر إليها الوسائط كما هي.
الفحوص
6 فحوص- الدالة debounce تُرجع دالة
- لا تُنفَّذ الدالة فورًا
- الاستدعاءات السريعة المتتالية تُنفَّذ مرّة واحدة
- تمرّر وسائط الاستدعاء الأخير
- دفعتان متباعدتان تُنفَّذان مرّتين
- الحقل مربوط بالنسخة المؤجَّلة