ล่าสุดการพัฒนาเว็บบทเรียน
×

HTML5 เกี่ยวกับการสอน

HTML บ้าน HTML บทนำ บรรณาธิการ HTML HTML ขั้นพื้นฐาน HTML องค์ประกอบ HTML แอตทริบิวต์ HTML หัวเรื่อง HTML ย่อหน้า HTML รูปแบบ HTML การจัดรูปแบบ HTML ใบเสนอราคา HTML รหัสคอมพิวเตอร์ HTML ความคิดเห็น HTML สี HTML CSS HTML การเชื่อมโยง HTML ภาพ ตาราง HTM​​L รายการ HTML HTML บล็อกและ Inline องค์ประกอบ HTML ชั้นเรียน HTML แบบ HTML อ่อนไหว HTML iframes HTML JavaScript HTML หัว HTML หน่วยงาน HTML สัญลักษณ์ HTML charset HTML URL เปลี่ยนเป็นรหัส HTML XHTML

HTML ฟอร์ม

HTML ฟอร์ม HTML องค์ประกอบของแบบฟอร์ม HTML รูปแบบการใส่ HTML แอตทริบิวต์การป้อนข้อมูล

HTML5

HTML5 แนะนำ HTML5 สนับสนุน HTML5 องค์ประกอบ HTML5 อรรถศาสตร์ การย้ายถิ่นของ HTM​​L5 HTML5 คู่มือสไตล์

HTML กราฟิก

HTML ผ้าใบ HTML SVG

HTML สื่อ

HTML สื่อ HTML วีดีโอ HTML เสียง HTML ปลั๊กอิน HTML YouTube

HTML APIs

HTML ตำแหน่งทางภูมิศาสตร์ HTML ลาก / Drop HTML เก็บข้อมูลท้องถิ่น HTML App ขุมทรัพย์ HTML คนงานเว็บ HTML SSE

HTML ตัวอย่าง

HTML ตัวอย่าง HTML ทดสอบ HTML5 ทดสอบ HTML สรุป

HTML คู่มืออ้างอิง

HTML รายการแท็ก HTML แอตทริบิวต์ เหตุการณ์ HTML HTML ผ้าใบ HTML เสียง / วิดีโอ HTML doctypes HTML สี HTML ชุดตัวอักษร HTML URL เปลี่ยนเป็นรหัส HTML รหัสภาษา HTTP ข้อความ HTTP วิธีการ PX to EM แปลง แป้นพิมพ์ลัด

HTML5 Web Workers


web worker เป็น JavaScript ทำงานในพื้นหลังโดยไม่มีผลต่อประสิทธิภาพการทำงานของหน้า


คืออะไร Web Worker ?

เมื่อรันสคริปต์ในหน้าเว็บ HTML, หน้าจะไม่ตอบสนองจนกว่าสคริปต์ที่จะเสร็จสิ้น

คนงานเว็บตามที่กำหนดโดย Web Consortium เวิลด์ไวด์ (W3C) และเว็บ Hypertext การประยุกต์ใช้เทคโนโลยีการทำงานกลุ่ม (WHATWG) เป็นสคริปต์ JavaScript ดำเนินการจากเพจ HTML ที่ทำงานในพื้นหลังเป็นอิสระจากสคริปต์ส่วนติดต่อผู้ใช้อื่น ๆ ที่ อาจจะยังได้รับการดำเนินการจากหน้า HTML เดียวกัน คนงานเว็บมักจะสามารถที่จะใช้ซีพียูแบบมัลติคอร์ได้อย่างมีประสิทธิภาพมากขึ้น


ภาพรวม

ในฐานะที่เป็นจินตนาการ WHATWG คนงานเว็บค่อนข้างน้ำหนักหนัก พวกเขาคาดว่าจะเป็นระยะยาวมีประสิทธิภาพค่าใช้จ่ายเริ่มต้นขึ้นสูงและสูงต่อเช่นค่าใช้จ่ายในหน่วยความจำ

คนงานเว็บไม่ได้มีเจตนาหรือคาดว่าจะนำมาใช้ในจำนวนมากเท่าที่จะทำได้หมูทรัพยากรระบบ

คนงานเว็บอนุญาตให้มีการดำเนินการพร้อมกันของหัวข้อการเบราว์เซอร์และหนึ่งหรือมากกว่าหนึ่งหัวข้อ JavaScript ทำงานในพื้นหลัง เบราว์เซอร์ซึ่งต่อไปนี้หัวข้อเดียวของการดำเนินการจะต้องรอในโปรแกรมจาวาสคริปต์ที่จะเสร็จสิ้นการดำเนินการก่อนที่จะดำเนินและนี่อาจจะใช้เวลาอย่างมีนัยสำคัญซึ่งโปรแกรมเมอร์อาจชอบที่จะซ่อนตัวจากผู้ใช้

จะช่วยให้เบราว์เซอร์ที่จะยังคงมีการดำเนินการตามปกติในขณะที่ทำงานสคริปต์ในพื้นหลัง สเปคคนงานเว็บเป็นข้อกำหนดที่แยกต่างหากจากสเปค HTML5 และสามารถใช้ร่วมกับ HTML5

ทุ่มเทและใช้ร่วมกันคนงาน: มีสองประเภทของคนงานเว็บ

เมื่อคนงานเว็บทำงานในพื้นหลังที่พวกเขาไม่ได้มีการเข้าถึงโดยตรงไป DOM แต่สื่อสารกับเอกสารโดยผ่านข้อความ นี้จะช่วยให้การดำเนินการแบบมัลติเธรดของโปรแกรม JavaScript


สนับสนุนเบราว์เซอร์

ตัวเลขในตารางระบุราว์เซอร์รุ่นแรกที่สนับสนุนอย่างเต็มที่ Web Workers

API
Web Workers 4.0 10.0 3.5 4.0 11.5

HTML Web Workers ตัวอย่าง

ตัวอย่างด้านล่างสร้างความเรียบง่าย web worker ที่นับตัวเลขในพื้นหลัง:

ตัวอย่าง

Count numbers:

ลองตัวเอง»

ตรวจสอบ Web Worker สนับสนุน

ก่อนที่จะสร้าง web worker ตรวจสอบว่าเบราว์เซอร์ของผู้ใช้สนับสนุนมัน

if(typeof(Worker) !== "undefined") {
    // Yes! Web worker support!
    // Some code.....
} else {
    // Sorry! No Web Worker support..
}

สร้าง Web Worker ไฟล์

ตอนนี้ขอสร้างของเรา web worker ใน JavaScript ภายนอก

ที่นี่เราสร้างสคริปต์ที่นับ สคริปต์ที่ถูกเก็บไว้ใน "/html/demo_workers.js" ไฟล์:

var i = 0;

function timedCount() {
    i = i + 1;
    postMessage(i) ;
    setTimeout("timedCount() ",500);
}

timedCount() ;

ส่วนที่สำคัญของรหัสข้างต้นเป็น postMessage() วิธีการ - ซึ่งจะใช้ในการโพสต์ข้อความกลับไปยังหน้าเว็บ HTML

Note: โดยปกติ web workers จะไม่ใช้สคริปต์ง่ายเช่น แต่สำหรับงานที่เข้มข้นมากขึ้น CPU


สร้าง Web Worker วัตถุ

ตอนนี้เรามี web worker ไฟล์เราจำเป็นต้องโทรได้จากหน้าเว็บ HTML

บรรทัดต่อไปนี้จะตรวจสอบถ้า web worker อยู่แล้วหากไม่ได้ - จะสร้างใหม่ web worker วัตถุและวิ่งรหัสใน "/html/demo_workers.js" :

if(typeof(w) == "undefined") {
    w = new Worker("/html/demo_workers.js");
}

แล้วเราสามารถส่งและรับข้อความจาก web worker

เพิ่ม "onmessage" ฟังเหตุการณ์กับ web worker

w.onmessage = function(event){
    document.getElementById("result").innerHTML = event.data;
};

เมื่อ web worker โพสต์ข้อความรหัสภายในฟังเหตุการณ์ที่จะดำเนินการ ข้อมูลจาก web worker ถูกเก็บไว้ใน event.data


ยุติ Web Worker

เมื่อ web worker วัตถุถูกสร้างขึ้นก็จะยังคงฟังสำหรับข้อความ (even after the external script is finished) จนกว่าจะมีการยกเลิก

เพื่อยุติ web worker และเบราว์เซอร์ฟรีทรัพยากร / คอมพิวเตอร์ใช้ terminate() วิธีการ:

w.terminate();

นำมาใช้ Web Worker

ถ้าคุณตั้งค่า web worker ตัวแปรไม่ได้กำหนดหลังจากที่มันได้ถูกยกเลิกคุณสามารถใช้รหัส:

w = undefined;

เต็มรูปแบบ Web Worker ตัวอย่างรหัส

เราได้เห็นแล้ว Web Worker รหัสใน .js ไฟล์ ด้านล่างเป็นรหัสสำหรับหน้า HTML:

ตัวอย่าง

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
<br><br>

<script>
var w;

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("/html/demo_workers.js");
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
    }
}

function stopWorker() {
    w.terminate();
    w = undefined;
}
</script>

</body>
</html>
ลองตัวเอง»

Web Workers และ DOM

ตั้งแต่ web workers อยู่ในไฟล์ภายนอกที่พวกเขาไม่ได้มีการเข้าถึงวัตถุ JavaScript ต่อไปนี้:

  • วัตถุหน้าต่าง
  • วัตถุเอกสาร
  • วัตถุปกครอง