Rumah >hujung hadapan web >tutorial css >Bagaimana untuk Menghentikan Gelung `setTimeout` dalam JavaScript?

Bagaimana untuk Menghentikan Gelung `setTimeout` dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-01 09:26:15130semak imbas

How to Stop a `setTimeout` Loop in JavaScript?

Cara Mengawal Perlaksanaan SetTimeout Gelung

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn