Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Adakah enjin javascript berbenang tunggal?
Enjin JavaScript adalah satu benang; tujuan utama JavaScript adalah untuk berinteraksi dengan pengguna dan mengendalikan DOM, contohnya untuk mengelakkan masalah penyegerakan yang rumit, supaya ia hanya boleh melakukan satu perkara pada masa yang sama, jadi JavaScript adalah satu benang .
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
Mengapa JS berbenang tunggal? Mengapakah ia memerlukan asynchronous?
Begitu juga, kami akan menjawab soalan berdasarkan senario kehidupan sebenar
(1) Mengapa JS berbenang tunggal?Berbenang tunggal: sama Anda hanya boleh melakukan satu perkara pada satu masa utas tunggal JavaScript berkaitan dengan tujuannya. Sebagai bahasa skrip pelayar, tujuan utama JavaScript adalah untuk berinteraksi dengan pengguna dan memanipulasi DOM. Ini menentukan bahawa ia hanya boleh menjadi satu-benang, jika tidak, ia akan menyebabkan masalah penyegerakan yang sangat kompleks. Sebagai contoh, katakan JavaScript mempunyai dua utas pada masa yang sama Satu utas menambah kandungan pada nod DOM tertentu, dan utas lain memadamkan nod tersebut.
Untuk memanfaatkan kuasa pengkomputeran CPU berbilang teras, HTML5 mencadangkan standard Pekerja Web, yang membenarkan skrip JavaScript mencipta berbilang rangkaian, tetapi urutan anak dikawal sepenuhnya oleh utas utama dan tidak dibenarkan mengendalikan DOM. Oleh itu, piawaian baharu ini tidak mengubah sifat berbenang tunggal JavaScript.
JS pada asalnya direka untuk digunakan dalam penyemak imbas, jadi bayangkan jika JS dalam penyemak imbas adalah berbilang benang.
Penerangan senario:
Jadi kini terdapat 2 proses, proses1 dan proses2 Memandangkan ia adalah JS berbilang proses, ia beroperasi pada dom yang sama pada masa yang sama 🎜>proses1 Padam DOM disunting, dan proses2 mengedit DOM dan mengeluarkan dua arahan yang bercanggah pada masa yang sama Bagaimana penyemak imbas harus melaksanakannya
Fikirkan dengan cara ini, ia sepatutnya mudah difahami JS direka bentuk untuk menjadi satu benang.
(2) Mengapakah JS memerlukan asynchronous?Penerangan adegan:
Jika tak segerak tidak wujud dalam JS, ia hanya boleh dilaksanakan daripada atas ke bawah. Jika baris sebelumnya mengambil masa yang lama untuk dihuraikan, kod di bawah akan disekat. Bagi pengguna, penyekatan bermaksud "tersekat", yang membawa kepada pengalaman pengguna yang buruk
Jadi, terdapat pelaksanaan tak segerak dalam JS.
Cadangan berkaitan:
Tutorial pembelajaran javascriptAtas ialah kandungan terperinci Adakah enjin javascript berbenang tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!