Rumah >hujung hadapan web >tutorial css >Bagaimana untuk Menghentikan Gelung `setTimeout` dalam JavaScript?
Anda sedang cuba mencipta penunjuk pemuatan menggunakan imej sprite dan telah menemui isu menghentikan gelung sebaik sahaja beban selesai. Fungsi yang anda sediakan memulakan gelung setTimeout yang berulang melalui tatasusunan nilai pada selang waktu tertentu. Cabarannya terletak pada menghentikan gelung ini secara pengaturcaraan.
Untuk menyelesaikan isu ini, anda boleh menggunakan pemegang pemasa yang dikembalikan oleh setTimeout. Anda kemudiannya boleh menggunakan clearTimeout untuk menghentikan operasi tamat masa.
Berikut ialah versi diubah suai kod anda yang menggabungkan teknik ini:
function setBgPosition() { var c = 0, timer = 0; var numbers = [0, -120, -240, -360, -480, -600, -720]; function run() { Ext.get('common-spinner').setStyle('background-position', numbers[c++] + 'px 0px'); if (c >= numbers.length) { c = 0; } timer = setTimeout(run, 200); } timer = setTimeout(run, 200); return stop; function stop() { if (timer) { clearTimeout(timer); timer = 0; } } } var stop = setBgPosition(); // ...later, when you're ready to stop... stop();
Dengan memberikan pemegang pemasa kepada pembolehubah pemasa, anda boleh rujuk dan kosongkannya menggunakan clearTimeout apabila beban selesai.
Selain itu, ia patut dipertimbangkan menggunakan setInterval dan bukannya setTimeout dalam senario di mana pelaksanaan berulang diingini. Ini boleh memudahkan kod dan menyediakan penyelesaian yang lebih mantap.
Ingat untuk melaksanakan mekanisme yang betul dalam setBgPosition itu sendiri untuk mengesan bila gelung harus ditamatkan untuk memastikan fungsi serba lengkap dan autonomi.
Atas ialah kandungan terperinci Bagaimana untuk Menghentikan Gelung `setTimeout` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!