العودة   منتديات عميد التعريب > >

الملاحظات

شؤون الكمبيوتر أخبار عن الشركات و كل ما يتعلق بأنظمة أجهزة الحاسب الآلي العادي أو المحمول أو اللوحي ...إلخ



إضافة رد
 
أدوات الموضوع انواع عرض الموضوع

قديم 2019-02-25, 03:41 AM   رقم المشاركة :1
معلومات العضو
عميد
إحصائية العضو





معدل تقييم المستوى: 2
baebu is on a distinguished road
المنتدى : شؤون الكمبيوتر
Icon (19) لماذا عليك استعمال setTimeout عوض setInterval في الجافاسكربت؟


في الجافاسكربت هناك إثنان من الوظائف البرمجية المشهورة لتكرار كود كل فترة زمنية معينة أو بعد مرور فترة زمنية معينة، وهي setTimeout وsetInterval، فعلى الرغم من أن هناك اختلاف طفيف بين كلا الوظيفتين، إلا أنه بإمكاننا استعمال واحدة بدل الأخرى، كيف ذلك؟ هذا الشرح المبسط سوف يجيبك فقط تابع معي.

الفرق بين settimeout وsetInterval

setTimeout: تشغيل وظيفة برمجية أو function بعد مرور مدة زمنية معينة بالملي ثانية، طبعا تلك function سوف تحتوي على كود برمجي قد يكون طويلا ومعقدا.

مثال:

setTimeout(sayHello, 1000);أي شغل الوظيفة البرمجية sayHello بعد مرور 1000 ملي ثاني أو كل ثانية واحدة، الوظيفة sayHello كما قلنا قد تحتوي على كود برمجي، على سبيل المثال بعد مرور ثانية واحدة إطبع كلمة Hello:

setTimeout(sayHello, 1000);function sayHello(){console.log("Hello");}setInterval: تشغيل وظيفة برمجية أو function بشكل متكرر كل مدة زمنية معينة بالملي ثانية.

مثال يطبع كلمة Hello كل ثانية بشكل متكرر:

setInterval(sayHello, 1000);function sayHello(){console.log("Hello");}الاستخدام

نفترض الآن أنه لديك كود برمجي طويل ومعقد ترغب في تشغيله بشكل متكرر كل ثانية، طبعا في هذه الحالة سوف تختار setInterval، ولكن تمهمل! الوظيفة البرمجية setInterval سوف تقوم بتشغيل الكود كامل في ثانية واحدة مهما كان طوله وتعقيده أليس كذلك؟ في هذه الحالة سوف تقوم setInterval بالضغط على المعالج لكي يُنهي الكود في الفترة المحددة ثم تكراره من جديد، هذه العملية سوف تؤدي إلى ارتفاع درجة حرارة الجهاز بسبب عمل المعالج بأقصى سرعة، وأيضا قد تؤدي في بعض الحالات إلى أخطاء في الكود المكرر خصوصا إذا كان هناك تأخير في التنفيذ، الحل هنا ببساطة شديدة هو استعمال الوظيفة البرمجية setTimeout مع بعض التعديل.



جدولة الوظيفة البرمجية setTimeout لتكرار الكود

دعنا نكرر الكود التالي كل ثانية باستعمال setTimeout، لتحقيق ذلك سوف نستعمل الجدولة كما في هذا المثال:

setTimeout(sayHello, 1000);function sayHello(){console.log(3+7);console.log("pcfacile1.com");console.log("Hello");setTimeout(sayHello, 1000);}في المثال السابق وفي أول سطر أطلقنا تشغيل الوظيفة البرمجية sayHello بعد مرور ثانية واحدة، وقبل الانتهاء من تشغيل الكود جدولنا تشغيل الوظيفة sayHello مرة أخرى في السطر الأخير بعد مرور ثانية واحدة، وهكذا سوف تعمل setTimeout تماما مثل setInterval لكن مع فرق كبير جدا.

الفرق هنا أننا لم نضغط على المعالج ولم نُلزمه بتشغيل الكود الطويل والمعقد في ثانية واحدة، ولكن قلنا للمعالج خذ وقتك في تشغيل الكود وعندما تنتهي من تشغيله أعد تشغيله مرة أخرى بعد مرور ثانية وليس في ثانية، هذا هو الفرق ببساطة شديدة.






glh`h ugd; hsjulhg setTimeout u,q setInterval td hg[hths;vfj? settimeout hgfvl[dm hg;,] hg,/dtm jaydg ehkdm .lkdm ;,] lv,v ,hp]mK



baebu غير متواجد حالياً   رد مع اقتباس

إضافة رد

مواقع النشر (المفضلة)

الكلمات الدلالية (Tags)
settimeout , البرمجية , الكود , الوظيفة , تشغيل , ثانية , زمنية , كود , مرور , واحدة،

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML متاحة

الانتقال السريع


الساعة الآن 06:59 AM


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
منتديات عميد التعريب 2010 - 2020