"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > العودية "settimeout` مقابل" setInterval ": أيهما أفضل لتوقيت دقيق؟

العودية "settimeout` مقابل" setInterval ": أيهما أفضل لتوقيت دقيق؟

نشر في 2025-03-24
تصفح:738

Recursive `setTimeout` vs. `setInterval`: Which is Better for Precise Timing?

setTimeOut

كما هو موضح في الكود المقدم (الخيار أ) ، يقوم SetTimeout المتكرر بتنفيذ وظيفة MyTimeOutFunction على فاصل 1000 مللي ثانية. بمجرد تشغيل MyTimeOutFunction ، فإنه يستدعي نفسه باستخدام setTimeOut ، وبالتالي تكرار الدورة إلى أجل غير مسمى.

بدلاً من ذلك ، يستخدم آلية مدمجة تضمن التنفيذ الدوري.

اعتبارات الدقة

تميل SetInterval إلى أن تكون أكثر دقة من SetTimeOut المتكرر ، حيث إنها تنتظر على وجه التحديد 1000 ميلي ثانية قبل تنفيذ الوظيفة ، بغض النظر عن وقت تنفيذها السابق.

العودية ، من ناحية أخرى ، يقدم تأخيرًا صغيرًا لأنها تحدد استدعاء الوظيفة التالية بعد أن اكتملت المكالمة السابقة. في الحالات التي يستغرقها MyTimeOutFunction قدرًا كبيرًا من الوقت للتنفيذ ، يمكن أن يصبح هذا التأخير كبيرًا. على عكس setInterval ، لا يوجد في SetTimeout المتكرر فكرة متأصلة عن التزامن. هذا يعني أنه إذا كان MyTimeOutFunction لا يزال ينفذ عندما يحاول الجدولة استدعاءها مرة أخرى ، فسوف تفشل المكالمة العودية. إنه يضمن استدعاء الوظيفة على فترات محددة ، حتى لو كانت هناك معالجة مستمرة. يوفر SetTimeout المتكرر المرونة ويسمح بالتأخير المخصص ، ولكن قد يكون أقل دقة وقد يعاني من مشكلات التزامن. SetInterval أكثر موثوقية للتنفيذ الدقيق والمتسق لدالة على فترات منتظمة ، لكنه يفتقر إلى نفس المستوى من التحكم في توقيت التنفيذ.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3