Rumah >hujung hadapan web >tutorial js >pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

青灯夜游
青灯夜游ke hadapan
2022-11-25 20:56:071823semak imbas

Artikel ini akan membantu anda mempelajari Nod gelung acara melalui animasi. Saya harap ia akan membantu anda!

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

Kita semua pernah mendengar bahawa JavaScript dan Node.js adalah satu benang, tetapi apakah maksudnya sebenarnya?

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

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

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

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.

Node.js 调用堆栈上的函数调用

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.

Libuv 处理 I/O 操作

Semasa Libuv memproses pertanyaan di latar belakang, JavaScript kami tidak disekat dan boleh terus digunakan console.log(”Before query result”).

在 Node.js 运行我们的代码时处理 I/O

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.

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

Kod ini tersedia di github.com/fabrillallo…

Kuiz pada gelung acara

Cuba ketahui kod berikut yang dicetak pada konsol.

pembelajaran visual nodejs: gelung acara [demonstrasi animasi]

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam