SwiftUI Academy · درس

‏Debounce للبحث المباشر

خفّف سرعة الإدخال المتكرر باستخدام debounce

الدرس 3 من 413 خطوة

‏Debounce للبحث المباشر درس مجاني في SwiftUI Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SwiftUI Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.

مشكلة البحث المباشر

عندما يكتب المستخدم استعلامًا، يؤدي إرسال طلب شبكة مع كل ضغطة مفتاح إلى إغراق الخادم بطلبات مهدرة.

انتظروا توقف الكتابة

يكون البحث المباشر أفضل عندما تنتظرون حتى يتوقف المستخدم مؤقتًا عن الكتابة، ثم ترسلون طلبًا واحدًا للاستعلام المستقر.

حان وقت debounce

يرسل عامل debounce القيمة بعد مرور فترة من الهدوء فقط، متجاهلًا الدفعات السريعة التي تسبقها.

searchText
    .debounce(for: .milliseconds(300),
              scheduler: RunLoop.main)

اختيار مدة التأخير

عادةً ما يبدو التأخير البالغ نحو 300 مللي ثانية سريع الاستجابة: فهو طويل بما يكفي لتجاوز الكتابة في منتصف الكلمة، وقصير بما يكفي ليبدو فوريًا. ⏱️

أهمية Scheduler

يحدد scheduler قائمة الانتظار التي تسلّم القيمة بعد debounce، وغالبًا ما تكون حلقة التشغيل الرئيسية لتحديثات واجهة المستخدم.

scheduler: RunLoop.main

debounce في مقابل throttle

بينما ينتظر debounce الصمت، يرسل throttle قيمة واحدة على الأكثر في كل فترة زمنية، بغض النظر عن فترات التوقف.

searchText.throttle(for: .seconds(1),
    scheduler: RunLoop.main,
    latest: true)

تجاوزوا الاستعلامات الفارغة

اربطوا debounce مع filter لتجاوز السلاسل الفارغة، حتى لا يؤدي إفراغ الحقل إلى تشغيل بحث.

.filter { !$0.isEmpty }

تجنبوا تكرار عمليات البحث

أضيفوا removeDuplicates حتى لا يؤدي إعادة كتابة الاستعلام نفسه بعد توقف مؤقت إلى تشغيل البحث نفسه مرتين.

.removeDuplicates()

مسار بحث

تشكل هذه operators معًا مسار بحث واضحًا لا يُشغَّل إلا عند إدخال ذي معنى ومستقر.

text
    .debounce(for: .milliseconds(300),
              scheduler: RunLoop.main)
    .removeDuplicates()

إلغاء العمل القديم

استخدموا Combine مع switchToLatest أو flatMap لإلغاء الطلب الجاري عند وصول إدخال أحدث.

سلاسة أكبر وتكلفة أقل

الفائدة: طلبات أقل، وتكلفة أدنى، ومربع بحث يبدو سريع الاستجابة بدلًا من أن يكون محمومًا. 🚀

تحقق سريع

تريدون تشغيل البحث فقط بعد توقف المستخدم عن الكتابة لمدة 300 مللي ثانية. ما العامل الأنسب؟

مراجعة: بحث مباشر هادئ

أنشأتم تدفق بحث ينتظر فيه debounce التوقف المؤقت، ثم يعمل filter وremoveDuplicates على تقليل العمل المهدَر. 🎯

البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «‏Debounce للبحث المباشر» مجاني؟

نعم — نص درس «‏Debounce للبحث المباشر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SwiftUI Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏Debounce للبحث المباشر»؟

خفّف سرعة الإدخال المتكرر باستخدام debounce تتمرن على SwiftUI Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SwiftUI Academy؟

لا تُشترط خبرة سابقة. SwiftUI Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «‏Debounce للبحث المباشر»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SwiftUI Academy هذا؟

نعم. كل درس في SwiftUI Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الناشرون والمشتركون
  2. التحويل باستخدام map وfilter
  3. ‏Debounce للبحث المباشر
  4. ربط Combine بـ SwiftUI
← العودة إلى SwiftUI Academy