Home » HTML » API trong HTML5 » Web Worker trong HTML5
Thông qua bài bạn sẽ biết Web Worker là gì? Tại sao sử dụng Web Worker? Ví dụ và cách hoạt động của Web Worker trong HTML5.

Web Worker trong HTML5

Web worker là một đoạn mã JavaScript chạy ngầm, không ảnh hưởng tới hiệu suất, tốc độ truy cập của trang.

Web Worker là gì?

Bình thường, khi bạn chạy một đoạn mã JavaScript trong trang HTML, trang sẽ không phản hồi bất kỳ thao tác nào của bạn cho tới khi đoạn mã chạy xong.

Web worker là một đoạn mã JavaScript chạy ngầm, độc lập với các đoạn mã khác, hoàn toàn không làm ảnh hưởng tới hiệu suất của trang. Trong khi web worker đang chạy ngầm, bạn có thể làm bất kỳ điều gì bạn muốn: nhấn chuột, bôi đen nội dung, v.v..

Trình duyệt hỗ trợ

Số trong bảng dưới đây thể hiện phiên bản đầu tiên của trình duyệt hỗ trợ đầy đủ cho thuộc tính.

Thuộc tính Icon Chrome Icon FireFox Icon IE Icon Safari Icon Opera
Web Worker 4.0 3.5 10.0 4.0 11.5

Ví dụ về Web Worker

Dưới đây là ví dụ đơn giản về web worker, nó được chạy ngầm để đếm số:

Số đã đếm được:

Kiểm tra trình duyệt hỗ trợ Web Worker

Trước khi khởi tạo, bạn nên kiểm tra xem trình duyệt của người dùng có hỗ trợ web worker hay không:

Tạo tệp tin Web Worker

Bây giờ, bạn hãy tạo một tệp tin JavaScript. Nội dung của tệp tin này chúng ta sẽ dùng để đếm số, bạn lưu lại với tên là “demo_workers.js”:

Phần quan trọng nhất của đoạn mã bên trên là hàm postMessage() – nó được sử dụng để gửi nội dung ngược lại trang HTML mà chúng ta đang chạy.

Lưu ý: Thông thường web worker không sử dụng để thực hiện những đoạn mã đơn giản như thế này mà thường dùng cho những công việc phức tạp hơn, chuyên sâu hơn.

Tạo Web Worker

Chúng ta đã có một tệp tin javascript, công việc tiếp theo là gọi nó vào trang HTML.

Đoạn mã dưới dây sẽ kiểm tra xem chúng ta đã chạy Web Worker hay chưa, nếu chưa – nó sẽ tạo ra một web worker mới và chạy đoạn mã được chứa trong tệp tin “demo_workers.js”:

Với đoạn mã trên chúng ta đã có thể gửi và nhận nội dung từ web worker.

Chúng ta sẽ thêm sự kiện “onmessage” để nhận các thông điệp từ web worker.

Khi web worker gửi nội dung về trang HTML, đoạn mã trên sẽ tự động được chạy. Nội dung gửi được lưu trữ trong event.data.

Dừng Web Worker

Khi web worker được khởi tạo, nó sẽ liên tục lắng nghe các thông điệp (ngay cả khi đã chạy xong đoạn mã javascript) tới khi bị dừng.

Để dừng web worker, giải phóng tài nguyên cho trình duyệt và máy tính, bạn sử dụng hàm terminate():

Sử dụng lại Web Worker

Nếu bạn thiết lập biến Web Worker thành “undefined”, bạn có thể tái sử dụng nó sau khi bị dừng:

Ví dụ hoàn chỉnh về Web Worker

Dưới đây là ví dụ hoàn chỉnh, bao gồm các bước mà chúng ta đã thực hiện ở trên:

Demo

Web Worker và DOM

Web worker được viết trong các tệp tin JavaScript, chúng sẽ không thể truy cập vào các đối tượng sau đây trong JavaScript:

  • Đối tượng window
  • Đối tượng document
  • Đối tượng parent

Leave a Reply

Your email address will not be published. Required fields are marked *

*