يكون استخدام المؤقت setTimeout في JavaScript على النحو التالي بشكل عام، بعد استدعاء beginrotate، فإنه يدخل في عملية تنفيذ Rotateloop بشكل منتظم، كما هو موضح في الكود التالي:
انسخ رمز الكود كما يلي:
زاوية فار = 0؛
وظيفة تدوير حلقة () {
إذا (الزاوية <360) {
زاوية++;
//استخدم الزاوية
//......
setTimeout("rotateloop()", 100);
}
}
وظيفة تبدأ () {
// افعل شيئا
//......
setTimeout("rotateloop()", 100);
}
إحدى مشكلات هذا الكود هي أنه يولد زاوية متغيرة عامة، والتي من الواضح أنها ليست ممارسة برمجة جيدة، لذلك فكرنا في استخدام الدوال المضمنة وقمنا بتغيير الكود إلى ما يلي:
انسخ رمز الكود كما يلي:
وظيفة تبدأ () {
زاوية فار = 0؛
وظيفة تدوير حلقة () {
إذا (الزاوية <360) {
زاوية++;
//استخدم الزاوية
//......
setTimeout("rotateloop()", 100);
}
}
// افعل شيئا
//......
setTimeout("rotateloop()", 100);
}
بعد إجراء هذا التغيير، وجدت أن JavaScript قد أبلغ عن خطأ ولم يتم العثور على Rotateloop. ومن الواضح أن setTimeout لم يعثر على الوظيفة المحلية المضمنة لـRotateloop. يمكن حل هذه المشكلة عن طريق تغيير بسيط في الكود:
انسخ رمز الكود كما يلي:
وظيفة تبدأ () {
زاوية فار = 0؛
وظيفة تدوير حلقة () {
إذا (الزاوية <360) {
زاوية++;
//استخدم الزاوية
//......
setTimeout(rotateloop, 100);
}
}
// افعل شيئا
//......
setTimeout(rotateloop, 100);
}
ما عليك سوى تغيير المعلمة الأولى لـ setTimeout إلى كائن دالة بدلاً من سلسلة.