บทช่วยสอนHTML

HTML หน้าแรก บทนำ HTML โปรแกรมแก้ไข HTML HTML พื้นฐาน องค์ประกอบ HTML แอตทริบิวต์ HTML ส่วนหัว HTML ย่อหน้า HTML รูปแบบ HTML การจัดรูปแบบ HTML ใบเสนอราคา HTML ความคิดเห็น HTML HTML สี HTML CSS ลิงค์ HTML รูปภาพ HTML HTML Favicon ตาราง HTML รายการ HTML บล็อก HTML & อินไลน์ คลาส HTML รหัส HTML HTML Iframes HTML JavaScript เส้นทางไฟล์ HTML หัวหน้า HTML เค้าโครง HTML HTML Responsive HTML รหัสคอมพิวเตอร์ HTML Semantics คู่มือสไตล์ HTML เอนทิตี HTML สัญลักษณ์ HTML HTML Emojis ชุดอักขระ HTML การเข้ารหัส URL HTML HTML กับ XHTML

แบบฟอร์มHTML

แบบฟอร์ม HTML คุณสมบัติแบบฟอร์ม HTML องค์ประกอบแบบฟอร์ม HTML ประเภทอินพุต HTML แอตทริบิวต์การป้อนข้อมูล HTML แอตทริบิวต์แบบฟอร์มการป้อนข้อมูล HTML

กราฟิกHTML

HTML Canvas HTML SVG

สื่อHTML

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

HTML APIs

HTML Geolocation HTML ลาก/วาง HTML Web Storage HTML Web Workers HTML SSE

ตัวอย่างHTML

ตัวอย่าง HTML แบบทดสอบ HTML แบบฝึกหัด HTML ใบรับรอง HTML สรุป HTML การเข้าถึง HTML

ข้อมูลอ้างอิงHTML

รายการแท็ก HTML แอตทริบิวต์ HTML HTML Global Attributes รองรับ HTML Browser เหตุการณ์ HTML HTML สี HTML Canvas HTML เสียง/วิดีโอ HTML Doctypes ชุดอักขระ HTML การเข้ารหัส URL HTML HTML Lang Codes ข้อความ HTTP วิธี HTTP ตัวแปลง PX เป็น EM แป้นพิมพ์ลัด

HTML Web Workers API


Web Worker คือ JavaScript ที่ทำงานอยู่เบื้องหลัง โดยไม่กระทบต่อประสิทธิภาพของเพจ


Web Worker คืออะไร?

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

Web Worker คือ 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

ตอนนี้ มาสร้างผู้ปฏิบัติงานเว็บของเราใน JavaScript ภายนอกกัน

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

var i = 0;

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

timedCount();

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

หมายเหตุ:โดยปกติผู้ปฏิบัติงานเว็บจะไม่ใช้สำหรับสคริปต์ง่ายๆ แต่สำหรับงานที่ต้องใช้ CPU มาก


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

ตอนนี้เรามีไฟล์ web worker แล้ว เราต้องเรียกมันจากหน้า HTML

บรรทัดต่อไปนี้ตรวจสอบว่าผู้ปฏิบัติงานมีอยู่แล้วหรือไม่ หากไม่มี - มันสร้างวัตถุคนงานเว็บใหม่และเรียกใช้รหัสใน "demo_workers.js":

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

จากนั้นเราสามารถส่งและรับข้อความจากพนักงานเว็บได้

เพิ่มฟังเหตุการณ์ "onmessage" ให้กับพนักงานเว็บ

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

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


ยุติ Web Worker

เมื่อมีการสร้างวัตถุผู้ปฏิบัติงานบนเว็บ ออบเจ็กต์จะยังคงฟังข้อความ (แม้หลังจากสคริปต์ภายนอกเสร็จสิ้น) จนกว่าจะสิ้นสุด

หากต้องการยุติการทำงานเว็บและทรัพยากรเบราว์เซอร์/คอมพิวเตอร์ฟรี ให้ใช้ terminate()วิธีการ:

w.terminate();

นำ Web Worker มาใช้ซ้ำ

หากคุณตั้งค่าตัวแปรผู้ปฏิบัติงานเป็น undefined หลังจากสิ้นสุดการทำงาน คุณสามารถใช้รหัสซ้ำได้:

w = undefined;

รหัสตัวอย่าง 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>

<script>
var w;

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("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

เนื่องจากผู้ปฏิบัติงานเว็บอยู่ในไฟล์ภายนอก พวกเขาจึงไม่มีสิทธิ์เข้าถึงวัตถุ JavaScript ต่อไปนี้:

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