cari
Rumahhujung hadapan webTutorial H5Serbuan pada Sambungan API Javascript HTML5 1—Pelaksanaan Asynchronous Pekerja Web dan Gambaran Keseluruhan Berkaitan_html5 kemahiran tutorial

Mekanisme pelaksanaan JavaScript , dsb.), tetapi pada dasarnya, pengendalian program masih dilakukan oleh enjin JavaScript dalam cara penjadualan satu benang. Benang pekerja yang diperkenalkan dalam HTML5 membolehkan enjin Javascript sebelah penyemak imbas melaksanakan kod Javascript secara serentak, dengan itu mencapai sokongan yang baik untuk pengaturcaraan berbilang benang sebelah pelayar.
Berbilang utas dalam Javascript - WebWorker

Web Worker dalam HTML5 boleh dibahagikan kepada dua jenis utas yang berbeza, satu ialah utas khusus Pekerja Dedicated, dan satu lagi adalah utas kongsi Dikongsi Pekerja. Kedua-dua jenis benang mempunyai tujuan yang berbeza.
Pekerja web yang berdedikasi

Pekerja yang berdedikasi disambungkan kepada skrip yang menciptanya. Ia boleh berkomunikasi dengan pekerja lain atau komponen penyemak imbas, tetapi ia tidak boleh berkomunikasi dengan DOM. Maksud berdedikasi, saya fikir, adalah bahawa thread ini hanya mengendalikan satu keperluan pada satu masa. Benang khusus dilaksanakan dalam pelbagai pelayar arus perdana kecuali IE dan boleh digunakan dengan yakin. Membuat utas

Membuat pekerja adalah sangat mudah hanya hantar nama fail fail JavaScript yang perlu dilaksanakan dalam utas kepada pembina. Komunikasi utas

Untuk berkomunikasi antara utas utama dan sub-utas, kaedah postMessage dan onmessage objek utas digunakan. Tidak kira siapa yang menghantar data kepada siapa, pengirim menggunakan kaedah postMessage, dan penerima menggunakan kaedah onmessage untuk menerima data. postMessage hanya mempunyai satu parameter, iaitu data yang dipindahkan, dan onmessage juga mempunyai hanya satu parameter Jika ia adalah peristiwa, data yang diterima diperoleh melalui event.data. Hantar data JSON

JSON ialah sesuatu yang disokong secara asli oleh JS. Gunakan JSON untuk menghantar data yang kompleks. Contohnya:


Salin kod
Kodnya adalah seperti berikut:
postMessage({ 'cmd': 'init', 'timestamp': Date.now()});


Mengendalikan ralat

Apabila ralat berlaku dalam urutan, ralatnya panggilan balik acara akan dipanggil. Jadi cara untuk mengendalikan ralat adalah sangat mudah, iaitu dengan mengaitkan peristiwa onerror contoh utas. Fungsi panggil balik ini mempunyai ralat parameter, yang mempunyai 3 medan: mesej - mesej ralat - fail skrip tempat ralat berlaku - baris tempat ralat berlaku; Hancurkan benang

Di dalam benang, gunakan kaedah tutup untuk memusnahkan dirinya sendiri. Dalam utas utama di luar utas, gunakan kaedah tamat contoh utas untuk memusnahkan utas. Mari kita lihat operasi asas benang daripada contoh: Kod HTML:




Salin kod
Kodnya adalah seperti berikut :
content="text/ html; charset=utf-8" />
pekerja web
var n = parseInt(event.data, 10); ke dalam direktori yang sama dan jalankan halaman Fail, semak konsol, anda boleh melihat hasil operasi.
Seperkara lagi di sini ialah dalam urutan utama, acara onmessage boleh disambungkan dengan cara lain:

Salin kod
Kodnya adalah seperti berikut:

worker.addEventListener('message', function(event) {
console.log("Result:" event.data);
}, palsu );


Secara peribadi, saya rasa ia sangat menyusahkan, jadi lebih baik menggunakan onmessage secara terus.
Menggunakan fail skrip lain
Benang pekerja boleh menggunakan kaedah global importScripts untuk memuatkan dan menggunakan fail skrip dalam domain atau perpustakaan kelas yang lain. Sebagai contoh, berikut adalah penggunaan undang-undang:

Salin kod
Kodnya adalah seperti berikut:

importScripts();/* tidak mengimport */
importScripts('foo.js'); /* hanya mengimport "foo.js" */
importScripts('foo.js', 'bar .js') ;/* mengimport dua skrip */

Selepas mengimport, anda boleh menggunakan kaedah dalam fail ini secara langsung. Lihat contoh kecil dalam talian:

Salin kod
Kodnya adalah seperti berikut:

/* *
* Gunakan kaedah importScripts untuk memperkenalkan skrip sumber luaran Di sini kami menggunakan perpustakaan alat pengiraan formula matematik math_utilities.js
* Apabila enjin JavaScript telah selesai memuatkan fail sumber ini, teruskan melaksanakan kod berikut. Pada masa yang sama, kod berikut boleh mengakses dan memanggil
* pembolehubah dan kaedah yang ditakrifkan dalam fail sumber.
**/
importScripts('math_utilities.js');
onmessage = function (event)
{
var first = event.data.first; var second = peristiwa .data.second;
hitung(pertama,kedua); pembahagi(pertama, kedua);
var common_multiple=multiple(first,second); ialah " common_multiple) ;
}


Sesetengah netizen di Internet juga terfikir untuk menggunakan kaedah importScripts di sini untuk menyelesaikan masalah pramuat sumber (pelayar memuatkan sumber terlebih dahulu tanpa menghuraikan dan melaksanakan sumber). Sebabnya juga Sangat mudah.

Sarang benang

Anda juga boleh mencipta sub-benang dalam urutan pekerja, dan pelbagai operasi masih sama.

Isu penyegerakan

Pekerja tidak mempunyai mekanisme kunci dan isu penyegerakan berbilang benang hanya boleh diselesaikan dengan kod (seperti menentukan pembolehubah isyarat).
SharedWebWorker Shared
Pekerja web kongsi terutamanya sesuai untuk isu konkurensi berbilang sambungan. Kerana ia perlu mengendalikan berbilang sambungan, APInya berbeza sedikit daripada pekerja yang berdedikasi. Selain itu, pekerja web kongsi, seperti pekerja berdedikasi, tidak mempunyai akses kepada DOM dan mempunyai akses terhad kepada bentuk hartanah. Pekerja web yang dikongsi juga tidak boleh berkomunikasi merentas rangkaian.
Skrip halaman boleh berkomunikasi dengan pekerja web kongsi Walau bagaimanapun, berbeza sedikit daripada pekerja web khusus (yang menggunakan port tersirat untuk berkomunikasi), komunikasi adalah eksplisit melalui penggunaan objek port dan Ini dilakukan dengan melampirkan pengendali acara mesej. . Selepas menerima mesej pertama daripada skrip pekerja web, pekerja web yang dikongsi melampirkan pengendali acara pada port yang diaktifkan. Biasanya, pengendali akan menjalankan kaedah postMessage() sendiri untuk mengembalikan mesej kepada kod panggilan, dan kemudian kaedah start() port akan menjana proses mesej yang sah. Lihat satu-satunya contoh yang boleh saya temui di Internet: Cipta urutan yang dikongsi untuk menerima arahan yang dihantar daripada sambungan yang berbeza, dan kemudian laksanakan logik pemprosesan arahan anda sendiri Selepas pemprosesan arahan selesai, hasilnya dikembalikan kepada setiap yang berbeza pengguna sambungan.
Kod HTML:



Salin kod


Kod tersebut adalah seperti berikut:





Contoh pekerja kongsi: cara menggunakan pekerja kongsi dalam HTML5

var worker = new SharedWorker('sharedworker.js');
var log = document.getElementById('response_from_worker');
worker.port.addEventListener('message', function(e) {
//log data respons dalam halaman web
log.textContent =e.data;
}, false);
worker.port.start();
worker.port.postMessage('ping daripada halaman web pengguna..');
//kaedah berikut akan menghantar input pengguna kepada sharedworker
fungsi postMessageToSharedWorker(input)
{
//takrifkan objek json untuk membina permintaan
var instructions={instruction:input.value };
worker.port.postMessage(arahan);
}




Contoh pekerja kongsi: cara menggunakan pekerja kongsi dalam HTML5

hantar arahan kepada pekerja kongsi:





脚本文件代码:

复制代码
代码>
// 创建一个共享线程用于接收从不同连接发送过来的指令,指令处理小完完各个不同的连接用户。
var connect_number = 0;
onconnect = fungsi(e) {
connect_number =connect_nomber 1;
//dapatkan port pertama di sini
var port = e.ports[0];
port.postMessage('Sambungan baharu! Nombor sambungan semasa ialah '
connect_number);
port.onmessage = function(e) {
//dapat arahan daripada peminta
var instruction=e.data.instruction;
var results=laksanakan_arahan(arahan);
port.postMessage('Permintaan: ' arahan ' Respons ' keputusan
' daripada pekerja kongsi...');
};
};
/*
* fungsi ini akan digunakan untuk melaksanakan arahan yang dihantar daripada peminta
* arahan @param
* @return
*/
function execute_instruction(instruction)
{
var result_value;
//laksanakan logik anda di sini
//laksanakan arahan...
kembali nilai_hasil;
}


Dalam contoh utas kongsi di atas, objek utas kongsi dibina pada halaman utama, iaitu setiap halaman sambungan pengguna, dan kemudian kaedah postMessageToSharedWorker ditakrifkan untuk menghantar arahan pengguna ke utas kongsi. Pada masa yang sama, connect_number ditakrifkan dalam coretan kod pelaksanaan utas kongsi untuk merekodkan jumlah bilangan sambungan ke utas kongsi ini. Selepas itu, gunakan pengendali acara onconnect untuk menerima sambungan daripada pengguna yang berbeza dan menghuraikan arahan yang diluluskan oleh mereka. Akhir sekali, kaedah execute_instruction ditakrifkan untuk melaksanakan arahan pengguna Selepas arahan dilaksanakan, keputusan dikembalikan kepada setiap pengguna.

Di sini kami tidak menggunakan pengendali acara onmessage bagi urutan pekerja seperti contoh sebelumnya, tetapi menggunakan kaedah lain addEventListener. Sebenarnya, seperti yang dinyatakan sebelum ini, prinsip pelaksanaan kedua-duanya pada asasnya adalah sama, tetapi terdapat sedikit perbezaan di sini Jika addEventListener digunakan untuk menerima mesej daripada rangkaian kongsi, maka kaedah worker.port.start() mesti digunakan. pertama untuk membolehkan port ini. Selepas itu, anda boleh menerima dan menghantar mesej secara normal dengan cara yang sama seperti urutan pekerja.
Pernyataan akhir
Perkara yang boleh dilakukan dalam urutan:
1 Anda boleh menggunakan setTimeout(), clearTimeout(), setInterval(), clearInterval (), dsb. fungsi.
2. Boleh menggunakan objek navigator.
3. Boleh menggunakan XMLHttpRequest untuk menghantar permintaan.
4. Storan Web boleh digunakan dalam benang.
5. Anda boleh menggunakan diri dalam benang untuk mendapatkan skop benang ini.
Perkara yang tidak boleh dilakukan dalam utas:
1. Objek DOM/BOM selain daripada navigator tidak boleh digunakan dalam utas, seperti tetingkap dan dokumen (jika anda mahu beroperasi, anda hanya boleh menghantar mesej kepada Creator pekerja, dikendalikan melalui fungsi panggil balik).
2. Pembolehubah dan fungsi dalam utas utama tidak boleh digunakan dalam utas.
3. Perintah operasi dengan kesan "penggantungan", seperti amaran, dsb., tidak boleh digunakan dalam rangkaian.
4. JS tidak boleh dimuatkan merentas domain dalam urutan.
Benang juga menggunakan sumber, dan menggunakan benang juga akan membawa kerumitan tertentu, jadi jika tiada sebab yang kukuh untuk menggunakan benang tambahan, maka jangan gunakannya.
Rujukan praktikal
Dokumentasi rasmi: http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html
Penerangan klasifikasi WebWorker: http://www.w3schools.com/html5/html5_webworkers.asp
Script House: http://www.jb51.net/w3school/html5/
Gambaran Keseluruhan WebWorker: https://developer.mozilla.org/en/Using_web_workers
Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Sambungan antara H5 dan HTML5: Persamaan dan PerbezaanSambungan antara H5 dan HTML5: Persamaan dan PerbezaanApr 24, 2025 am 12:01 AM

H5 dan HTML5 adalah konsep yang berbeza: HTML5 adalah versi HTML, yang mengandungi unsur -unsur baru dan API; H5 adalah rangka kerja pembangunan aplikasi mudah alih berdasarkan HTML5. HTML5 Parses dan membuat kod melalui pelayar, manakala aplikasi H5 perlu menjalankan bekas dan berinteraksi dengan kod asli melalui JavaScript.

Blok bangunan kod H5: elemen utama dan tujuan merekaBlok bangunan kod H5: elemen utama dan tujuan merekaApr 23, 2025 am 12:09 AM

Unsur -unsur utama HTML5 termasuk ,,,,,, dan lain -lain, yang digunakan untuk membina laman web moden. 1. Tentukan kandungan kepala, 2.

HTML5 dan H5: Memahami Penggunaan BiasaHTML5 dan H5: Memahami Penggunaan BiasaApr 22, 2025 am 12:01 AM

Tidak ada perbezaan antara HTML5 dan H5, iaitu singkatan HTML5. 1.HTML5 adalah versi kelima HTML, yang meningkatkan fungsi multimedia dan interaktif laman web. 2.H5 sering digunakan untuk merujuk kepada laman web atau aplikasi mudah alih berasaskan HTML5, dan sesuai untuk pelbagai peranti mudah alih.

HTML5: Blok Bangunan Web Moden (H5)HTML5: Blok Bangunan Web Moden (H5)Apr 21, 2025 am 12:05 AM

HTML5 adalah versi terkini bahasa markup hiperteks, yang diseragamkan oleh W3C. HTML5 memperkenalkan tag semantik baru, sokongan multimedia dan peningkatan bentuk, meningkatkan struktur web, pengalaman pengguna dan kesan SEO. HTML5 memperkenalkan tag semantik baru, seperti,, dan lain -lain, untuk menjadikan struktur laman web lebih jelas dan kesan SEO lebih baik. HTML5 menyokong elemen multimedia dan tiada pemalam pihak ketiga diperlukan, meningkatkan pengalaman pengguna dan kelajuan memuatkan. HTML5 meningkatkan fungsi bentuk dan memperkenalkan jenis input baru seperti, dan lain -lain, yang meningkatkan pengalaman pengguna dan membentuk kecekapan pengesahan.

Kod H5: Menulis HTML5 Bersih dan CekapKod H5: Menulis HTML5 Bersih dan CekapApr 20, 2025 am 12:06 AM

Bagaimana cara menulis kod HTML5 yang bersih dan cekap? Jawapannya adalah untuk mengelakkan kesilapan biasa dengan tag semantik, kod berstruktur, pengoptimuman prestasi dan mengelakkan kesilapan biasa. 1. Gunakan tag semantik seperti, dan lain -lain untuk meningkatkan kebolehbacaan kod dan kesan SEO. 2. Pastikan kod berstruktur dan boleh dibaca, menggunakan lekukan dan komen yang sesuai. 3. Mengoptimumkan prestasi dengan mengurangkan tag yang tidak perlu, menggunakan CDN dan kod pemampatan. 4. Elakkan kesilapan biasa, seperti tag tidak ditutup, dan pastikan kesahihan kod.

H5: Bagaimana ia meningkatkan pengalaman pengguna di webH5: Bagaimana ia meningkatkan pengalaman pengguna di webApr 19, 2025 am 12:08 AM

H5 meningkatkan pengalaman pengguna web dengan sokongan multimedia, penyimpanan luar talian dan pengoptimuman prestasi. 1) Sokongan multimedia: H5 dan Elemen Memudahkan pembangunan dan meningkatkan pengalaman pengguna. 2) Penyimpanan Luar Talian: WebStorage dan IndexedDB membenarkan penggunaan luar talian untuk meningkatkan pengalaman. 3) Pengoptimuman Prestasi: Pekerja web dan elemen mengoptimumkan prestasi untuk mengurangkan penggunaan jalur lebar.

Dekonstruktur Kod H5: Tag, Elemen, dan AtributDekonstruktur Kod H5: Tag, Elemen, dan AtributApr 18, 2025 am 12:06 AM

Kod HTML5 terdiri daripada tag, elemen dan atribut: 1. Tag mentakrifkan jenis kandungan dan dikelilingi oleh kurungan sudut, seperti. 2. Unsur terdiri daripada tag permulaan, kandungan dan tag akhir, seperti kandungan. 3. Atribut menentukan pasangan nilai utama dalam tag permulaan, meningkatkan fungsi, seperti. Ini adalah unit asas untuk membina struktur web.

Memahami Kod H5: Asas HTML5Memahami Kod H5: Asas HTML5Apr 17, 2025 am 12:08 AM

HTML5 adalah teknologi utama untuk membina laman web moden, menyediakan banyak elemen dan ciri -ciri baru. 1. HTML5 memperkenalkan unsur -unsur semantik seperti, dan lain -lain, yang meningkatkan struktur laman web dan SEO. 2. Sokongan unsur multimedia dan menanamkan media tanpa pemalam. 3. Borang meningkatkan jenis input baru dan sifat pengesahan, memudahkan proses pengesahan. 4. Menawarkan fungsi storan luar talian dan tempatan untuk meningkatkan prestasi laman web dan pengalaman pengguna.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),