Kata Pengantar
JavaScript ialah bahasa skrip peringkat tinggi yang digunakan secara meluas dalam pembangunan web dan pembangunan bahagian hadapan. Dalam kebanyakan kes, JavaScript ialah bahasa tak segerak yang mengikut corak pengaturcaraan dipacu peristiwa, di mana fungsi dilaksanakan apabila peristiwa dicetuskan. Ini menjadikan JavaScript sesuai untuk mengendalikan tugas yang berkaitan dengan operasi pengguna UI, seperti manipulasi DOM dan permintaan AJAX.
Walau bagaimanapun, kadangkala kita perlu menyekat pelaksanaan JavaScript untuk memastikan penyegerakan dan pelaksanaan berurutan kod, terutamanya dalam beberapa senario yang rumit, seperti apabila kita perlu memastikan bahawa fungsi tertentu dilaksanakan sebelum ia dijalankan. selesai. Fungsi lain mesti menunggu hasil yang dipulangkan. Pada masa ini, kita perlu menggunakan beberapa teknik untuk melaksanakan penyekatan JavaScript.
Artikel ini akan memperkenalkan beberapa kaedah untuk melaksanakan penyekatan JavaScript, terutamanya termasuk:
Gunakan setTimeout untuk melaksanakan penyekatan dalam JavaScript
Apabila kita perlu melaksanakan penyekatan dalam JavaScript, setTimeout ialah kaedah yang sangat biasa. setTimeout boleh mencipta pemasa untuk melaksanakan tugas tertentu selepas tempoh masa. Dengan menetapkan parameter masa pemasa kepada 0, kita boleh membiarkan pelaksana JavaScript melaksanakan fungsi dalam pemasa ini selepas menyelesaikan tugas semasa. Dengan cara ini, kami boleh mensimulasikan penyekatan JavaScript.
Kod sampel adalah seperti berikut:
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function demo() { console.log('Start'); await sleep(5000); // sleep for 5 seconds console.log('End'); } demo();
Dalam kod sampel ini, kami mentakrifkan fungsi bernama sleep, yang memanggil kaedah setTimeout dan mengembalikan objek Promise. Apabila kita memanggil kaedah tidur dalam fungsi demo, pelaksana JavaScript akan menunggu selama 5 saat sebelum melaksanakan kod berikutnya.
Gunakan Promise untuk melaksanakan penyekatan dalam JavaScript
Promise ialah corak pengaturcaraan tak segerak yang sangat penting dalam JavaScript. Dengan menggunakan Promises, kami boleh menukar operasi tak segerak kepada corak segerak, menjadikannya lebih mudah untuk memastikan kod disegerakkan dan boleh dibaca.
Kod sampel adalah seperti berikut:
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function demo() { console.log('Start'); sleep(5000).then(() => { console.log('End'); }); } demo();
Dalam kod sampel ini, kami masih menggunakan fungsi tidur untuk mensimulasikan operasi menyekat, tetapi kali ini kami menggunakan objek Promise. Apabila kita memanggil kaedah tidur dalam fungsi demo, ia akan mengembalikan objek Janji Kita boleh mendaftarkan fungsi panggil balik dengan memanggil kaedah kemudian, dan melaksanakan fungsi panggil balik ini apabila Janji selesai. Kali ini, daripada menggunakan kata kunci tak segerak dan menunggu, objek Promise memastikan kod itu disegerakkan dan boleh dibaca.
Gunakan async/wait untuk melaksanakan penyekatan JavaScript
ES6 memperkenalkan kata kunci async/wait Melalui kata kunci ini, kami boleh mengendalikan objek Promise dengan lebih mudah untuk melaksanakan operasi penyekatan JavaScript.
Kod sampel adalah seperti berikut:
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function demo() { console.log('Start'); await sleep(5000); console.log('End'); } demo();
Dalam kod sampel ini, kami menggunakan async dan menunggu kata kunci dan meletakkan fungsi sleep di dalam badan fungsi async. Apabila kita memanggil kaedah tidur di dalam fungsi demo, ia secara automatik akan menunggu untuk selesainya objek Promise. Pendekatan ini membolehkan kami menjelaskan perbezaan antara menyekat dan tidak menyekat dalam kod dan memastikan kod itu ringkas dan boleh dibaca.
Gunakan Penjana untuk melaksanakan penyekatan JavaScript
Penjana ialah fungsi JavaScript khas yang boleh diganggu dan disambung semula. Penjana boleh mengulangi tugas tak segerak dan dicampur dengan aliran kawalan lain untuk melaksanakan operasi menyekat dalam JavaScript.
Kod sampel adalah seperti berikut:
function* demo() { console.log('Start'); yield sleep(5000); console.log('End'); } function sleep(ms) { setTimeout(() => { it.next(); }, ms); } const it = demo(); it.next();
Dalam kod sampel ini, kami menggunakan fungsi Penjana dan meletakkan fungsi tidur di dalamnya. Apabila kita memanggil kata kunci hasil di dalam fungsi demo, ia akan menjeda keadaan pelaksanaan semasa dan menunggu pelaksanaan fungsi tidur selesai. Apabila fungsi tidur selesai, pelaksana JavaScript akan kembali ke fungsi demo dan terus melaksanakan kod berikutnya.
Kesimpulan
JavaScript ialah bahasa pengaturcaraan yang sangat berkuasa dan fleksibel, dan sifat tak segeraknya juga menjadikannya bahasa skrip yang sangat baik. Tetapi dalam beberapa kes, kita perlu mengorbankan beberapa ciri tak segeraknya untuk mencapai operasi yang lebih berurutan dan segerak. Melalui beberapa kaedah yang diperkenalkan dalam artikel ini, kami boleh mengawal proses pelaksanaan JavaScript dengan lebih baik dan menulis kod yang lebih mantap dan cekap.
Atas ialah kandungan terperinci JavaScript melaksanakan penyekatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!