Rumah > Artikel > hujung hadapan web > Javascript BUKAN single threaded!!
TIDAK! anda tidak salah mengetahui bahawa JavaScript ialah bahasa berulir tunggal. Ia adalah bahasa satu-benang yang mempunyai akses kepada satu utas utama untuk melaksanakan kod. Oleh itu, apabila kita bercakap tentang pengaturcaraan segerak, kita bercakap tentang utas tunggal ini melakukan semua pengangkatan berat dan melaksanakan kod kita.
Tetapi pada hakikatnya enjin V8 dan Node.js menggunakan perpustakaan c yang dipanggil libuv untuk mendapatkan akses kepada enam utas tambahan. Dua daripada ini digunakan untuk melakukan kutipan sampah dan selebihnya digunakan untuk melakukan tugas latar belakang seperti pengaturcaraan tak segerak.
Ya. Apabila kita mengatakan bahawa kod adalah tak segerak atau tidak menyekat, perkara yang sebenarnya berlaku ialah kod async dihantar ke utas tambahan ini dengan panggilan balik dan utas utama terus melakukan kerjanya tanpa menyekat kod yang lain.
Apabila kod async selesai, fungsi panggil balik ditolak ke dalam baris gilir acara dengan sama ada ralat atau data yang diperlukan. Kemudian gelung acara menolaknya ke dalam timbunan panggilan dan ledakan kami mendapat hasil kami, untuk memahami ini dengan beberapa kod. Mari lihat kaedah fail baca modul fs.
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
Dalam kod di atas kaedah fail baca dihantar ke utas latar belakang. Bacaan akan berlaku di latar belakang, dan apabila itu selesai panggilan balik ditolak ke dalam baris gilir acara dengan sama ada ralat atau data.
Sebaik sahaja dalam timbunan panggilan, panggilan balik dilaksanakan dan kita ditinggalkan sama ada ralat atau data sebagai output.
Terima kasih kerana membaca Saya harap saya dapat menerangkan tentang cara berulir tunggal dalam Javascript.
Atas ialah kandungan terperinci Javascript BUKAN single threaded!!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!