Dalam JS, anda boleh menggunakan fungsi gelung for dan clearInterval() untuk mengosongkan semua pemasa, sintaks "end=setInterval(function(){},10000);for(i=1;i
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.
Kita kadangkala perlu mengosongkan semua pemasa dalam halaman
Jika kita menyimpan pemasa (setInterval
) dengan pembolehubah apabila kita menciptanya, maka mengosongkan pemasa adalah sangat mudah dan terus Hanya jelas (clearInterval
)
Contohnya:
let timer = setInterval(function () { console.log('timer'); }, 1000); clearInterval(timer);
Tetapi kadangkala pemasa yang dibuat tidak disimpan dengan pembolehubah, jadi kita tidak boleh mengosongkannya secara langsung
Contohnya:
let timer = setInterval(function () { console.log('timer'); }, 1000); setInterval(function () { console.log('timer'); }, 1000); clearInterval(timer); clearInterval(/* ??? */); // 操蛋
Kami mempunyai pembolehubah timer
untuk menyimpan pemasa pertama, jadi kami boleh terus menghantar timer
ke clearInterval
dan mengosongkannya
Tetapi untuk pemasa kedua, kami Jika anda tidak menyimpannya, anda tidak' tidak tahu apa yang perlu dihantar apabila clearInterval
, yang sangat kacau
Jadi bagaimana untuk menyelesaikan masalah ini?
Mari kita lihat dahulu peraturannya:
for (let i = 0; i < 10000; i++) { let t = setInterval(function () { }, 1000); console.log(t); }
Keputusan berjalan:
Jelas sekali mudah diperoleh: nilai pulangan setInterval
Ia adalah jenis berangka yang mewakili pemasa, dan nilai ini meningkat daripada 1 mengikut susunan pemasa dicipta
Maka tidak sukar untuk menyedari keperluan kita untuk mengosongkan semua pemasa dalam halaman
Jadi contohnya, sekarang kita ada Terdapat begitu banyak pemasa:
let t = setInterval(function () { }, 1000); let r = Math.random() * 100; for (let i = 0; i < r; i++) { setInterval(function () { }, 1000); }
Jika anda ingin mengosongkan semuanya, anda perlu menggunakan gelung untuk mengosongkan nombor yang sepadan dengan pemasa dari 1 hingga yang terakhir dibuat menggunakan clearInterval
mengikut urutan. Tetapi sekarang terdapat sekumpulan pemasa Kami tidak tahu berapa banyak pemasa yang ada sekarang, jadi kami tidak tahu nombor yang sepadan dengan pemasa yang terakhir dibuat. Jadi, mula-mula kita boleh menjadi lebih ganas
for (let i = 1; i < 100000; i++) { clearInterval(i); }
Saya cuma dapati angka yang besar seperti 100000. Secara amnya, tidak sepatutnya ada lebih daripada 100000 pemasa pada halaman Secara amnya, pemasa berada dalam julat 1. 100000. , jadi kaedah ini pasti dapat mencapai keperluan kita.
Tetapi ia masih tidak bagus, lagipun, ia agak terlalu ganas. Kemudian kita perlu mengetahui nombor n yang sepadan dengan pemasa yang dibuat terakhir. ialah n 1, jadi kita boleh mencari n, dan kemudian kita boleh gelung dari 1 hingga n Oh, ingat untuk mengosongkan pemasa ke-1 yang baru dibuat, jadi gelung bermula dari 1 hingga akhir.
Kemudian kodnya adalah seperti berikut:
let end = setInterval(function () { }, 10000); for (let i = 1; i <= end; i++) { clearInterval(i); }
Dengan cara ini kami telah menyedari dengan sempurna keperluan untuk mengosongkan semua pemasa dalam halaman
Kemudian mari kita cuba kesan dan ambil Video Tencent Contohnya:
Terdapat imej karusel pada halaman utama imej Tencent Video biasanya dilaksanakan menggunakan setInterval
pemasa, tetapi kami tidak melakukannya tahu apakah pembolehubah yang menyimpan pemasa karusel ini Jika kita ingin menghentikan karusel ini, kita boleh menggunakan kod tadi untuk menghentikan terus semua pemasa.
Selepas melaksanakan kod sebentar tadi dalam konsol, saya mendapati bahawa imej karusel memang telah berhenti.
Hebat!
[Pembelajaran yang diBagaimana untuk mengosongkan semua pemasa dalam javascriptorkan: Tutorial JavaScript Lanjutan]
Atas ialah kandungan terperinci Bagaimana untuk mengosongkan semua pemasa dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!