Rumah >hujung hadapan web >tutorial js >pembelajaran visual nodejs: gelung acara [demonstrasi animasi]
Artikel ini akan membantu anda mempelajari Nod gelung acara melalui animasi. Saya harap ia akan membantu anda!
Kita semua pernah mendengar bahawa JavaScript dan Node.js adalah satu benang, tetapi apakah maksudnya sebenarnya?
Ini bermakna JavaScript hanya boleh melakukan satu perkara pada satu masa. Sebagai contoh, kita tidak boleh mendarab dan menambah nombor pada masa yang sama. Kami biasanya melakukan ini mengikut urutan. Kita tambah dan kemudian darab dan sebaliknya. Komputer moden sangat pantas sehinggakan hasil dua atau lebih tugasan berturut-turut kelihatan dikira serentak, tetapi terdapat pengecualian. [Cadangan tutorial berkaitan: tutorial video nodejs]
Kita semua telah cuba mengikis data daripada tapak web yang perlahan itu atau menunggu lebih daripada 30 saat sebelum mendapat hasil pertanyaan pangkalan data. 我们是否想因为数据库查询速度慢而阻止单线程执行更多任务?
Walau bagaimanapun, Node.js tidak berhenti menjalankan operasi lain, kerana Libuv
ialah pustaka C yang bertanggungjawab untuk gelung peristiwa dan pemprosesan tak segerak permintaan rangkaian, resolusi DNS, operasi sistem fail, penyulitan data dan tugas lain .
Apakah yang berlaku di sebalik tabir apabila Node.js mengendalikan tugas seperti pertanyaan pangkalan data? Kami akan menerokanya langkah demi langkah dengan mengikuti kod ini.
Ini ialah kod sampel kami
Enjin JavaScript V8 menguruskan timbunan panggilan, yang menjejaki bahagian mana program kami menjalankan bahagian penting. Setiap kali kita memanggil fungsi JavaScript, ia ditolak ke atas timbunan panggilan. Sebaik sahaja fungsi itu mencapai penghujungnya atau pernyataan return
, ia muncul dari timbunan.
Dalam contoh kami, baris kod console.log('Starting Node.js')
ditambahkan pada timbunan panggilan dan mencetak Starting Node.js
pada konsol. Dengan melakukan ini, ia mencapai penghujung fungsi log
dan dialih keluar daripada timbunan panggilan.
Barisan kod berikut ialah pertanyaan pangkalan data. Tugasan ini muncul serta-merta kerana ia boleh mengambil masa yang lama. Mereka dihantar ke Libuv, yang memprosesnya secara tak segerak di latar belakang. Pada masa yang sama, Node.js boleh terus menjalankan kod lain tanpa menyekat urutan tunggalnya.
Pada masa hadapan, Node.js akan mengetahui cara mengendalikan pertanyaan kerana kami telah mengaitkan fungsi panggil balik dengan arahan untuk mengendalikan hasil tugasan atau ralat. Dalam kes kami, ini adalah console.log
yang mudah, tetapi ia boleh menjadi logik perniagaan yang kompleks atau pemprosesan data dalam aplikasi pengeluaran.
Semasa Libuv memproses pertanyaan di latar belakang, JavaScript kami tidak disekat dan boleh terus digunakan console.log(”Before query result”)
.
Selepas pertanyaan selesai, panggilan baliknya akan ditolak ke baris gilir acara I/O untuk dijalankan serta-merta* . * Gelung acara menyambungkan baris gilir ke timbunan panggilan. Ia menyemak sama ada yang terakhir kosong dan mengalihkan item baris gilir pertama untuk pelaksanaan.
Kod ini tersedia di github.com/fabrillallo…
Cuba ketahui kod berikut yang dicetak pada konsol.
Gelung acara, perwakilan dan mekanisme pemprosesan tak segerak adalah kunci kepada Node.js mengendalikan ribuan sambungan , membaca Ramuan rahsia untuk mengambil/menulis fail besar, mengendalikan pemasa semasa bekerja pada bahagian lain kod kami.
Dalam artikel itu, kami melihat peranan penting Libuv dan keupayaannya untuk mengendalikan banyak tugas yang berpotensi untuk jangka panjang. Pada masa yang sama, kami mengetahui tentang gelung peristiwa dan peranannya sebagai jambatan/penyambung antara panggilan balik operasi tak segerak dan timbunan panggilan dalam baris gilir acara I/O. Dalam artikel berikut, kami akan meneroka dengan lebih terperinci bagaimana peringkat berbeza gelung acara mengendalikan pemasa, I/O, janji dan kutu .
Alamat asal bahasa Inggeris: https://dev.to/nodedoctors/an-animated-guide-to-nodejs-event-loop-3g62
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!
Atas ialah kandungan terperinci pembelajaran visual nodejs: gelung acara [demonstrasi animasi]. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!