Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memastikan Fungsi yang Dipanggil dengan `setInterval` Melaksanakan Sekali Sahaja?

Bagaimanakah Saya Boleh Memastikan Fungsi yang Dipanggil dengan `setInterval` Melaksanakan Sekali Sahaja?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 01:54:11365semak imbas

How Can I Ensure a Function Called with `setInterval` Executes Only Once?

Menguruskan Fungsi Berjadual dengan setInterval dan clearInterval

Pertimbangkan serpihan kod berikut:

function doKeyDown(event) {
    switch (event.keyCode) {
        case 32:
            /* Space bar was pressed */
            if (x == 4) {
                setInterval(drawAll, 20);
            }
            else {
                setInterval(drawAll, 20);
                x += dx;
            }
            break;
    }
}

Matlamatnya adalah untuk panggil fungsi drawAll sekali sahaja, bukan buat gelung yang berulang kali memanggil ia.

Menggunakan clearInterval untuk Menghentikan Pelaksanaan Berulang

setInterval mewujudkan pemasa berulang yang memanggil fungsi yang ditentukan secara berkala. Untuk menghentikan pelaksanaannya, kita boleh menggunakan clearInterval. Begini cara ia berfungsi:

var handle = setInterval(drawAll, 20);

// When you want to stop it:
clearInterval(handle);
handle = 0; // Indication of an uncleared interval

Pada penyemak imbas, pemegangnya dijamin bukan sifar nilai berangka. Oleh itu, pemegang tetapan = 0 berfungsi sebagai bendera yang mudah untuk menunjukkan bahawa jeda telah dikosongkan.

Menjadualkan Panggilan Fungsi Sekali

Jika niatnya adalah untuk laksanakan fungsi sekali sahaja, pertimbangkan untuk menggunakan setTimeout. Fungsi ini menjadualkan fungsi untuk digunakan selepas selang masa tertentu tetapi tidak meneruskannya selepas itu. Ia juga mengembalikan pemegang untuk kemungkinan pembatalan.

setTimeout(drawAll, 20);

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Fungsi yang Dipanggil dengan `setInterval` Melaksanakan Sekali Sahaja?. 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