Penjelasan fungsi: Melaksanakan pelaksanaan tertunda setTimeout
adalah fungsi asli dalam JavaScript yang digunakan untuk memanggil fungsi atau melaksanakan coretan kod selepas kelewatan yang ditentukan (milisaat). Ini berguna dalam banyak senario, seperti memaparkan tetingkap pop timbul selepas pengguna melayari halaman untuk seketika, atau menambah kelewatan ringkas sebelum mengeluarkan kesan hover elemen (mencegah salah operasi). setTimeout
Fungsi
- JavaScript's
- membolehkan pelaksanaan fungsi atau coretan kod selepas bilangan milisaat tertentu, yang sangat berguna untuk tugas -tugas seperti memaparkan popup selepas masa pelayaran tertentu.
setTimeout
- menerima rujukan fungsi sebagai parameter pertama, yang boleh menjadi nama fungsi, pembolehubah yang merujuk fungsi, atau fungsi tanpa nama. Ia juga boleh melaksanakan rentetan kod, tetapi tidak disyorkan kerana ini akan mengurangkan kebolehbacaan, keselamatan dan kelajuan.
setTimeout
Anda boleh menggunakan fungsi tanpa nama sebagai parameter pertama untuk lulus parameter ke fungsi panggil balik yang dilaksanakan oleh - . Walau bagaimanapun, alternatif kepada parameter penyenaraian selepas kelewatan tidak serasi dengan IE9 dan di bawah.
setTimeout
Dalam kod yang dilaksanakan oleh - , nilai
setTimeout
berjalan dalam konteks pelaksanaan yang berbeza daripada fungsi yang memanggilnya, yang boleh menyebabkan masalah apabila konteks kata kuncithis
adalah penting. Ini boleh diselesaikan dengan menggunakan fungsi perpustakaanthis
, atau fungsi anak panah.bind
Nilai pulangan - adalah ID angka yang boleh digunakan untuk membatalkan pemasa bersempena dengan fungsi
setTimeout
.clearTimeout
Contoh Penggunaan
Blok kod berikut menunjukkan contoh mudah yang mencetak mesej ke konsol selepas tamat masa 2 saat (2000 milisaat): setTimeout
Untuk menunjukkan konsep ini dengan lebih terperinci, demonstrasi berikut memaparkan tetingkap pop timbul selepas mengklik butang dua saat: (Sila lawati Codepen untuk melihat demo)
function greet() { console.log('Howdy!'); } setTimeout(greet, 2000);Tatabahasa
Menurut dokumentasi MDN, sintaks
adalah seperti berikut:
setTimeout
of:
const timeoutID = setTimeout(code); const timeoutID = setTimeout(code, delay); const timeoutID = setTimeout(functionRef); const timeoutID = setTimeout(functionRef, delay); const timeoutID = setTimeout(functionRef, delay[, arg1, arg2, /* … ,*/ argN])
adalah ID digital yang boleh digunakan bersempena dengan
- untuk membatalkan pemasa.
-
timeoutID
clearTimeout
merujuk kepada antara muka atau antara muka - .
scope
Window
WorkerGlobalScope
adalah fungsi yang akan dilaksanakan selepas pemasa tamat. -
functionRef
adalah sintaks alternatif yang membolehkan anda memasukkan rentetan dan bukannya fungsi yang disusun dan dilaksanakan apabila pemasa tamat. -
code
adalah bilangan milisaat yang panggilan fungsi harus ditangguhkan. Jika ditinggalkan, lalai adalah 0. -
delay
, ..., adalah parameter lain yang diserahkan kepada fungsi yang ditentukan oleh - .
arg1
argN
functionRef
NOTA: Kurungan persegi
[]
dan
anda akan melihat bahawa kadang -kadang sintaks mengandungi window.setTimeout
. Mengapa ini?
Apabila menjalankan kod dalam penyemak imbas, scope
akan merujuk kepada objek Global window
. setTimeout
dan window.setTimeout
merujuk kepada fungsi yang sama, satu -satunya perbezaan ialah dalam pernyataan kedua, kita merujuk kepada kaedah setTimeout
sebagai harta objek window
.
Pada pendapat saya, ini menambah kerumitan, sementara manfaatnya adalah minimum. Jika anda menentukan kaedah setTimeout
yang lain yang akan ditemui terlebih dahulu dan kembali dalam rantaian skop, maka anda mungkin mempunyai masalah yang lebih besar untuk dibimbangkan.
Dalam tutorial ini, saya akan menghilangkan window
, tetapi pada akhirnya, terpulang kepada anda yang sintaks yang anda pilih.
Kaedah ini menerima rujukan fungsi sebagai parameter pertama. setTimeout
setTimeout
function greet() { console.log('Howdy!'); } setTimeout(greet, 2000);atau fungsi tanpa nama:
const timeoutID = setTimeout(code); const timeoutID = setTimeout(code, delay); const timeoutID = setTimeout(functionRef); const timeoutID = setTimeout(functionRef, delay); const timeoutID = setTimeout(functionRef, delay[, arg1, arg2, /* … ,*/ argN])Seperti yang disebutkan di atas, anda juga boleh lulus rentetan kod ke
untuk pelaksanaannya:
function greet() { alert('Howdy!'); } setTimeout(greet, 2000);
setTimeout
const greet = function() { alert('Howdy!'); }; setTimeout(greet, 2000);
Ia menggunakan tersirat
, yang merupakan risiko keselamatan yang berpotensi.- Ia lebih perlahan daripada alternatif kerana ia perlu memanggil jurubahasa JS.
-
eval
Parameter lulus ke - Dalam senario asas, kaedah penyemak imbas yang disukai adalah untuk lulus hujah kepada fungsi panggil balik yang dilaksanakan oleh
setTimeout
Dalam contoh berikut, kami memilih haiwan rawak dari array
. Kemudian, setTimeout
melaksanakan fungsi
animals
makeTalk
setTimeout
NOTA: Saya menggunakan fungsi biasa (makeTalk
) untuk mengembalikan elemen rawak dari array. Anda juga boleh menulisnya sebagai ekspresi fungsi menggunakan fungsi anak panah:
setTimeout(() => { alert('Howdy!'); }, 2000);
kami akan memperkenalkan fungsi anak panah di bahagian seterusnya. Berikut adalah codepen yang mengandungi kod di atas (anda perlu membuka konsol untuk melihat output). getRandom
kaedah alternatif
setTimeout('alert("Howdy!");', 2000);Dari sintaks di bahagian atas artikel, dapat dilihat bahawa terdapat kaedah kedua untuk lulus parameter ke fungsi panggil balik yang dilaksanakan oleh
. Ini melibatkan penyenaraian mana -mana parameter selepas kelewatan.
Rujuk kepada contoh sebelumnya, ini akan memberi kita:
setTimeout
Malangnya, ini tidak berfungsi di IE9 atau di bawah, di mana parameter diluluskan sebagai
function makeTalk(animal) { const noises = { cat: 'purr', dog: 'woof', cow: 'moo', pig: 'oink', } console.log(`A ${animal} goes ${noises[animal]}.`); } function getRandom(arr) { return arr[Math.floor(Math.random() * arr.length)]; } const animals = ['cat', 'dog', 'cow', 'pig']; const randomAnimal = getRandom(animals); setTimeout(() => { makeTalk(randomAnimal); }, 1000);Soalan Kata Kata Kunci
setTimeout
Kod yang dilaksanakan berjalan dalam konteks pelaksanaan yang berbeza daripada fungsi yang memanggilnya. Ini menjadi masalah apabila konteks kata kunci this
adalah penting:
function greet() { console.log('Howdy!'); } setTimeout(greet, 2000);Sebab output ini ialah dalam contoh pertama,
menunjuk ke objek this
, dan dalam contoh kedua, dog
menunjuk kepada objek this
global (ia tidak mempunyai atribut window
). sound
Penetapan penjelasan nilai
this
untuk membuat fungsi baru, dan apabila dipanggil, kata kunci bind
akan ditetapkan ke nilai yang disediakan (dalam hal ini objek bind
). Ini akan memberi kita: this
dog
Perpustakaan Pengguna
const timeoutID = setTimeout(code); const timeoutID = setTimeout(code, delay); const timeoutID = setTimeout(functionRef); const timeoutID = setTimeout(functionRef, delay); const timeoutID = setTimeout(functionRef, delay[, arg1, arg2, /* … ,*/ argN])Banyak perpustakaan datang dengan fungsi terbina dalam untuk menyelesaikan masalah ini. Sebagai contoh, kaedah
jQuery. Ia menerima fungsi dan mengembalikan fungsi baru yang akan sentiasa mempunyai konteks tertentu. Dalam kes ini, itu akan menjadi:
jQuery.proxy()
Gunakan fungsi anak panah dalam
function greet() { alert('Howdy!'); } setTimeout(greet, 2000);Fungsi anak panah diperkenalkan dalam ES6. Mereka jauh lebih pendek daripada sintaks fungsi biasa:
setTimeout
, tetapi satu perkara yang perlu diperhatikan - fungsi anak panah tidak mempunyai nilai
sendiri. Sebaliknya, mereka menggunakan nilaiconst greet = function() { alert('Howdy!'); }; setTimeout(greet, 2000);konteks leksikal yang tertutup.
setTimeout
Gunakan fungsi biasa: this
this
setTimeout(() => { alert('Howdy!'); }, 2000);Dalam contoh kedua,
menunjuk kepada objek
global (sekali lagi, ia tidak mempunyai hartasetTimeout('alert("Howdy!");', 2000);
Ini boleh membawa kita ke dalam masalah apabila menggunakan fungsi anak panah dengan this
. Kami telah melihat sebelum ini untuk memberikan nilai window
yang betul untuk fungsi yang dipanggil dalam sound
:
setTimeout
Ini tidak akan berfungsi apabila menggunakan fungsi anak panah dalam kaedah yang diperkenalkan, kerana fungsi anak panah tidak mempunyai nilai setTimeout
sendiri. Kaedah ini masih akan merakam this
.
function makeTalk(animal) { const noises = { cat: 'purr', dog: 'woof', cow: 'moo', pig: 'oink', } console.log(`A ${animal} goes ${noises[animal]}.`); } function getRandom(arr) { return arr[Math.floor(Math.random() * arr.length)]; } const animals = ['cat', 'dog', 'cow', 'pig']; const randomAnimal = getRandom(animals); setTimeout(() => { makeTalk(randomAnimal); }, 1000);Menulis kod bersih menggunakan fungsi anak panah dan
this
sendiri, ia juga boleh memberi kita kelebihan. undefined
setTimeout
this
Batalkan pemasa
const getRandom = arr => arr[Math.floor(Math.random() * arr.length)];
Seperti yang kita pelajari pada permulaan artikel, nilai pulangan
adalah ID angka yang boleh digunakan bersamaan dengan fungsisetTimeout(makeTalk, 1000, randomAnimal);untuk membatalkan pemasa:
function greet() { console.log('Howdy!'); } setTimeout(greet, 2000);
mari kita lihat bagaimana ia berfungsi. Dalam pen di bawah, jika anda mengklik butang Countdown Mula, undur akan bermula. Sekiranya undur selesai, anak kucing menang. Walau bagaimanapun, jika anda menekan butang "Hentikan Countdown", pemasa akan dihentikan dan ditetapkan semula. (Jika anda tidak melihat kesan sejuk apabila undur mencapai sifar, penun pena menggunakan butang yang tertanam di sebelah kanan bawah.)
Ringkasan
Dalam artikel ini, saya menunjukkan cara menggunakan setTimeout
untuk melambatkan pelaksanaan fungsi. Saya juga menunjukkan cara lulus parameter ke setTimeout
, bagaimana untuk mengekalkan nilai this
di dalam fungsi panggil baliknya, dan bagaimana membatalkan pemasa.
setTimeout
FAQS untuk fungsi JavaScript
-
Apa yang ada di JavaScript?setTimeout
adalah fungsi terbina dalam dalam JavaScript yang membolehkan anda menjadualkan pelaksanaan fungsi atau segmen kod selepas kelewatan tertentu (dalam milisaat).
setTimeout
-
Bagaimana ia berfungsi?setTimeout
Apabila anda memanggil fungsisetTimeout
- Apakah alternatif yang digunakan
?
, yang akan mengulangi fungsi pada selang waktu yang ditentukan, dan yang lebih barusetTimeout
Ya, terdapat alternatif, seperti, yang merupakan animasi yang lebih lancar dan prestasi penyemak imbas yang lebih baik.
setInterval
requestAnimationFrame
- Bilakah tidak boleh digunakan
?
adalah alat yang berguna untuk penjadualan pelaksanaan kod asynchronous dalam JavaScript, tetapi dalam beberapa kes ia mungkin bukan pilihan terbaik. Untuk animasi atau permainan yang tepat, anda harus menggunakansetTimeout
. Anda tidak boleh bersarang pelbagai
setTimeout
panggilan;requestAnimationFrame
tidak tepat untuk kelewatan kurang daripada 10 milisaat; Jika anda membina aplikasi masa nyata (seperti permainan multiplayer dalam talian atau platform perdagangan kewangan), pilih teknologi masa nyata seperti WebSockets. Tugas-tugas yang berintensifkan CPU boleh menghalang gelung acara;setTimeout
setTimeout
- Bolehkah saya membatalkan operasi
?
untuk membatalkan masa tamat yang dijadualkan. Ia mengambil masa tamat masa yang dikembalikan olehsetTimeout
Ya, anda boleh menggunakan fungsisebagai parameter. Contohnya:
Apakah perbezaan antaraclearTimeout
setTimeout
const timeoutId = setTimeout(myFunction, 1000); clearTimeout(timeoutId);
-
dan ?
setTimeout
setInterval
setTimeout
Jadualkan fungsi untuk dijalankan sekali selepas kelewatan yang ditentukan, manakalasetInterval
menjadualkan fungsi untuk berjalan berulang kali pada selang yang ditentukan sehingga dibatalkan atau program berhenti. -
Apakah nilai kelewatan minimum yang boleh saya gunakan
setTimeout
?Nilai kelewatan minimum adalah 0, yang bermaksud bahawa fungsi itu dijadualkan dilaksanakan sebelum thread semasa selesai tetapi mengendalikan sebarang peristiwa yang belum selesai. Walau bagaimanapun, granulariti sebenar pemasa berbeza dari penyemak imbas ke penyemak imbas dan persekitaran kepada pelayar yang berbeza. Sesetengah persekitaran mungkin tidak menyokong kelewatan kurang daripada 10 milisaat.
-
Apa yang ada di node.js?setTimeout
adalah fungsi terbina dalam untuk node.js yang menangguhkan pelaksanaan fungsi atau blok kod yang diberikan oleh bilangan milisaat tertentu.
setTimeout
-
bagaimana menggunakan dalam node.js?
anda boleh menggunakan fungsisetTimeout
seperti berikut:
setTimeout
di manasetTimeout(callback, delay);
adalah fungsi yang anda ingin laksanakan selepas kelewatan milisaat yang ditentukan.callback
-
Apakah amalan terbaik untuk menggunakan dalam node.js?
Beberapa amalan terbaik termasuk menggunakan fungsi yang dinamakan sebagai panggilan balik, mengendalikan kesilapan dengan anggun, dan memahami tingkah laku gelung peristiwa untuk mengelakkan kelewatan atau penyumbatan yang tidak dijangka. Juga, pertimbangkan untuk menggunakansetTimeout
untuk melaksanakan dengan segera semasa kitaran gelung acara seterusnya.
setImmediate
Atas ialah kandungan terperinci Fungsi JavaScript SetTimeout: Panduan dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScriptusestWotypesofcomments: Single-line (//) danMulti-line (//)

Perbezaan utama antara Python dan JavaScript ialah sistem jenis dan senario aplikasi. 1. Python menggunakan jenis dinamik, sesuai untuk pengkomputeran saintifik dan analisis data. 2. JavaScript mengamalkan jenis yang lemah dan digunakan secara meluas dalam pembangunan depan dan stack penuh. Kedua -duanya mempunyai kelebihan mereka sendiri dalam pengaturcaraan dan pengoptimuman prestasi yang tidak segerak, dan harus diputuskan mengikut keperluan projek ketika memilih.

Sama ada untuk memilih Python atau JavaScript bergantung kepada jenis projek: 1) Pilih Python untuk Sains Data dan Tugas Automasi; 2) Pilih JavaScript untuk pembangunan front-end dan penuh. Python disukai untuk perpustakaannya yang kuat dalam pemprosesan data dan automasi, sementara JavaScript sangat diperlukan untuk kelebihannya dalam interaksi web dan pembangunan stack penuh.

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular
