Panggilan sekejap
Panggilan terputus-putus adalah sangat biasa dalam JavaScript setInterval dipanggil berulang kali pada selang waktu tertentu.
KaedahsetInterval() menerima dua parameter: parameter pertama boleh menjadi rentetan atau fungsi, dan parameter kedua ialah nombor dalam milisaat, menunjukkan panjang selang ulangan.
Parameter ialah rentetan
Apabila parameter yang diluluskan pertama ialah rentetan, seperti berikut:
setInterval("alert('this is a string.')",1000);
Rentetan di sini ialah sekeping kod JavaScript, yang sama dengan parameter fungsi eval() yang dihantar masuk. Jika terdapat dua tanda petikan di dalam dan di luar, ingat bahawa tanda petikan tidak sepatutnya sama.
setInterval() akan mengembalikan ID berangka ID ini ialah pengecam unik bagi kod pelaksanaan yang dirancang, jadi ia boleh digunakan untuk membatalkan operasi berulang. SetInterval() sepadan dengan kaedah untuk membatalkan operasi: clearInterval() Sudah tentu, jika anda ingin membatalkan operasi berulang, clearInterval() mesti diletakkan sebelum pelaksanaan selesai.
Contohnya:
var intervalId=setInterval(...); clearInterval(intervalId);
Mula-mula kita mendapat ID, dan kemudian menghantar ID ke clearInterval() Kerana operasi pembatalan mengikut setInterval(), ia boleh dibatalkan serta-merta, seperti ia tidak berlaku.
Parameter ialah fungsi
Oleh kerana apabila parameter yang diluluskan ialah rentetan, ia boleh menyebabkan kehilangan prestasi, jadi dalam keadaan biasa, kaedah yang paling biasa digunakan ialah menghantar fungsi kepadanya.
adalah seperti berikut:
var num=0; function increNum(){ num++; if(num>=10){ clearInterval(intervalId); alert('over'); } } intervalId=setInterval(increNum,500);
Atur cara ini menetapkan fungsi incrNum dan menghantarnya sebagai parameter kepada setInterval() Pada masa yang sama, apabila ia diulang 10 kali, operasi berjalan dibatalkan dan kotak amaran muncul.
Panggilan tamat masa
Panggilan tamat masa adalah serupa dengan panggilan terputus-putus, setTimeout(), ia juga menerima dua parameter, yang pertama boleh menjadi rentetan yang mengandungi kod JavaScript, atau ia boleh menjadi fungsi, parameter kedua ialah masa tunda dan setInterval() Parameter kaedah adalah sama.
Tetapi inilah sesuatu yang perlu diberi perhatian:
Masa kelewatan tidak bermakna program pasti akan dilaksanakan selepas kelewatan yang ditetapkan.
Kenapa?
Oleh kerana JavaScript ialah penterjemah satu utas, ia hanya boleh melaksanakan satu keping kod dalam tempoh masa tertentu dan tidak boleh melaksanakan berbilang keping kod pada masa yang sama, oleh itu, terdapat baris gilir tugas dalam JavaScript, dan tugasan yang akan dilaksanakan disusun dalam baris gilir mengikut urutan Masa tunda yang ditetapkan ialah masa selepas tugas semasa akan ditambah ke baris gilir tugas. Jika tiada tugasan yang sedang dilaksanakan, kod yang ditambahkan pada baris gilir tugasan akan dilaksanakan dengan serta-merta Jika terdapat segmen kod sedang dilaksanakan, tugasan yang baru ditambah hanya akan dilaksanakan selepas segmen kod dilaksanakan.
Begitu juga, setTimeout() juga mempunyai ID pemulangan, dan anda juga boleh menggunakan ID berangka ini untuk membatalkan panggilan tamat masa Kaedah pembatalan yang sepadan ialah clearTimeout().
Di sini, kami menggunakan kaedah panggilan tamat masa untuk menyalin kod yang berulang kali dilaksanakan dalam panggilan terputus-putus:
var num=0; function increNum(){ num++; if(num<=10){ setTimeout(increNum,500); }else{ alert('over'); } } setTimeout(increNum,500);
Program ini juga boleh melengkapkan operasi berulang dan menamatkan operasi selepas 10 kali Perbezaan daripada setInterval() di atas ialah ia tidak menggunakan ID berangka yang dikembalikan.
Oleh kerana setInterval() dilaksanakan berulang kali, akan sentiasa ada ID berangka yang dikembalikan, jadi ID berangka ini mesti dijejaki sepanjang masa dan setTimeout() tidak lagi akan dilaksanakan selepas ia dilaksanakan, jadi kami tidak perlu untuk menjejaki ID berangka yang dikembalikan. Ini memberi kita kemudahan tertentu.
Selain itu, panggilan terputus-putus yang terakhir mungkin dipanggil sebelum panggilan terputus-putus sebelum ini akan berlaku apabila masa pelaksanaan fungsi lebih lama daripada masa panggilan terputus-putus, jadi secara ringkasnya, gunakan setTimeout() adalah lebih baik. cara untuk mensimulasikan panggilan terputus-putus.
Sudah tentu, tiada masalah besar dalam menggunakan setInterval() dalam program yang agak mudah (tiba-tiba saya teringat satu ayat, kewujudan adalah munasabah~~~~).