غالبًا ما يتم استخدام SetTimeout لتأخير تنفيذ وظيفة ما ، ويستخدم على النحو التالي:
نسخة الكود كما يلي:
setTimeout (function () {
...
}، نفذ الوقت)؛
في بعض الأحيان ، يتم استخدام setTimeOut (وظيفة ... ، 0) للمعالجة غير المتزامنة ؛ على سبيل المثال:
نسخة الكود كما يلي:
وظيفة f () {
... / / استعد
setTimeout (function () {
... // افعل شيئًا
} ، 0) ؛
يعود …؛
}
قبل تعيين معالج الوظيفة بواسطة setTimeOut ، إرجاع الدالة F ؛
كن حذرًا بشكل خاص عند استخدام المعالجة غير المتزامنة ، خاصة عند استخدام ميزات الإغلاق ؛
على سبيل المثال:
نسخة الكود كما يلي:
لـ (var i = 0 ؛ i <10 ؛ i ++) {
setTimeout (function () {
console.log (i) ؛
} ، 0) ؛
}
بالنسبة للطلاب الذين يستخدمون هذه الطريقة لأول مرة ، من المحتمل أن يعتقدوا أن البرنامج سيطبع 0 ... 9 ، لكن النتيجة هي أن 10 مطبوعة بالفعل 10 ؛
المشكلة هي أنه عند اكتمال الحلقة ، يتم تنفيذ الوظيفة ، وأصبحت 10 ، ويتم استخدام 10 في Console.log (i)!
الغرض من إضافتك هو طباعة 0 ... 9 ، بحيث يمكنك تغيير الطريقة واستخدام معلمات الوظيفة لحفظ 0 ....9 (في الواقع ، يستخدم أيضًا عمليات الإغلاق):
نسخة الكود كما يلي:
لـ (var i = 0 ؛ i <10 ؛ i ++) {
setTimeout ((وظيفة (i) {
وظيفة الإرجاع () {
console.log (i) ؛
}
}) (i) ، 0) ؛
}