Rumah >hujung hadapan web >tutorial js >Perbincangan ringkas tentang teknik setTimeout dan setInterval_javascript
Semasa saya menulis kod terbaharu, saya melihat seseorang menggunakan setTimeout(fun,0) dalam projek, jadi saya ingin meringkaskannya. Pemahaman peribadi, sila nyatakan jika terdapat sebarang kesilapan. THX
Untuk memahami cara pemasa JavaScript berfungsi, anda mesti terlebih dahulu memahami bahawa enjin JavaScript adalah satu benang. Ini boleh difahami kerana enjin JavaScript ialah pelayan Ia mempunyai baris gilir perkhidmatan Semua acara elemen antara muka, panggilan balik pencetus berjadual dan panggilan balik permintaan tak segerak dibariskan dalam baris gilir tugas ini, menunggu untuk diproses. Semua tugas adalah unit minimum dan tidak mengganggu pemprosesan. Dengan cara ini, anda boleh memahami setTimeout(fun,0 Ini tidak bermakna bahawa kod akan dilaksanakan serta-merta melainkan baris gilir tugasan kosong (sebenarnya, terdapat perbezaan dalam cara setiap penyemak imbas sebenarnya melaksanakan ini. Pelayar yang lebih baru sebenarnya Ia). mungkin pada 4ms; versi lama mungkin lebih panjang, 16ms juga mungkin). Dan setTimeout(keseronokan, masa) bermaksud berapa lama masa yang diperlukan untuk menambah panggilan balik yang menyeronokkan pada baris gilir tugasan ini, iaitu, sekurang-kurangnya masa yang diperlukan untuk melaksanakan keseronokan.
Contohnya:
setTimeout(function () { console.log(1); }, 0); var tem = 0; for (var i = 1; i < 1000000; i++) { tem += i; }; console.log(2);
Paparkan hasil sebagai
Maksudnya, apabila melaksanakan setTimeout, panggilan balik fungsi ditambahkan pada baris gilir tugas, tetapi ia tidak dilaksanakan serta-merta kerana enjin js masih sibuk memproses js semasa, dan hanya pergi ke senarai tugas selepas kod ini segmen dilaksanakan Dapatkan tugas baru, jadi hasilnya adalah untuk memaparkan 2 dahulu dan kemudian 1.
Kaedah setInterval(keseronokan, masa) adalah untuk menambah keseronokan pada baris gilir pada selang masa tertentu Jadi persoalannya, bagaimana jika masa pelaksanaan keseronokan lebih lama daripada masa?
Lihat sekeping kod
var num = 0; var time = setInterval(function () { var tem = 0; for (var i = 1; i < 99999999; i++) { tem += i; }; num ++; console.log(num); }, 100); setTimeout(function (){ clearInterval(time); }, 1000);
Ini bermaksud untuk melaksanakan sekeping kod setiap 100ms dan mengosongkan pemasa selepas 1s. Tetapi bagaimana dengan hasilnya?
Hasilnya dipaparkan sebagai
Dalam erti kata lain, sebenarnya ia tidak banyak kali dilaksanakan. Maksudnya, beberapa selang akan dilangkau, jadi selang antara beberapa pelaksanaan kod mungkin lebih kecil daripada yang dijangkakan. Ternyata apabila kod pemasa ditambahkan pada baris gilir, jika contoh kod pemasa wujud, kod pemasa akan dilangkau.
Memetik gambar akan memudahkan untuk difahami.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.