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

Bagaimana untuk Menghentikan Gelung `setTimeout` atau `setInterval` dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-13 16:59:10
asal
775 orang telah melayarinya

How to Stop a `setTimeout` or `setInterval` Loop in JavaScript?

Menghentikan gelung setTimeout

Dalam kod yang disediakan, gelung setTimeout digunakan untuk terus menetapkan kedudukan latar belakang sprite imej, mencipta animasi memuatkan. Walau bagaimanapun, adalah perlu untuk mengawal apabila gelung dihentikan sebaik sahaja pemuatan selesai.

Penyelesaian melibatkan penggunaan pemegang pemasa yang dikembalikan oleh setTimeout. Pemegang ini boleh digunakan bersama dengan clearTimeout untuk menghentikan tamat masa.

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;
        }
    }
}
Salin selepas log masuk

Kod yang disemak ini mentakrifkan fungsi henti dalam setBgPosition. Fungsi berhenti menyemak sama ada pemegang pemasa hadir dan, jika ya, mengosongkannya dengan clearTimeout. Kod yang dikemas kini boleh digunakan seperti berikut:

var stop = setBgPosition();
// ...later, when you're ready to stop...
stop();
Salin selepas log masuk

Sebagai alternatif, setInterval boleh digunakan dan bukannya setTimeout untuk mencipta gelung berulang. Walau bagaimanapun, setInterval memerlukan clearInterval untuk menghentikan gelung.

function setBgPosition() {
    var c = 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;
        }
    }

    return setInterval(run, 200);
}
Salin selepas log masuk

Kod ini boleh digunakan seperti berikut:

var timer = setBgPosition();
// ...later, when you're ready to stop...
clearInterval(timer);
Salin selepas log masuk

Akhir sekali, disyorkan untuk mempertimbangkan menggunakan syarat dalam setBgPosition itu sendiri untuk mengesan selesai proses pemuatan dan menghentikan gelung secara automatik.

Atas ialah kandungan terperinci Bagaimana untuk Menghentikan Gelung `setTimeout` atau `setInterval` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan