HTML Web Workers API
Web Worker là một JavaScript chạy ở chế độ nền, không ảnh hưởng đến hiệu suất của trang.
Web Worker là gì?
Khi thực thi các script trong một trang HTML, trang sẽ không phản hồi cho đến khi script kết thúc.
Web Worker là một JavaScript chạy trong nền, độc lập với các script khác, mà không ảnh hưởng đến hiệu suất của trang. Bạn có thể tiếp tục làm bất cứ điều gì bạn muốn: Nhấp chuột, chọn thứ, v.v..., trong khi Web Worker chạy ở chế độ nền.
Hỗ trợ trình duyệt
Các số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ cho Web Worker.
| API Web Workers |
Google Chrome | MS Edge | Firefox | Safari | Opera |
|---|---|---|---|---|---|
| 4.0 | 10.0 | 3.5 | 4.0 | 11.5 |
Ví dụ về HTML Web Workers
Ví dụ dưới đây tạo một web worker đơn giản đếm số trong nền:
Kiểm tra hỗ trợ Web Worker
Trước khi tạo web worker, hãy kiểm tra xem trình duyệt của người dùng có hỗ trợ hay không:
if (typeof(Worker) !== "undefined") {
// Yes! Web worker support!
// Some code.....
} else {
// Sorry! No Web Worker support..
}
Tạo file Web Worker
Bây giờ, hãy tạo web worker trong một JavaScript bên ngoài.
Ở đây, bài viết tạo một script có giá trị. Script được lưu trữ trong file "demo_workers.js":
var i = 0;
function timedCount() {
i = i + 1;
postMessage(i);
setTimeout("timedCount()",500);
}
timedCount();
Phần quan trọng của đoạn code trên là phương thức postMessage() - được sử dụng để đăng thông báo trở lại trang HTML.
Lưu ý: Thông thường web worker không được sử dụng cho các script đơn giản như vậy mà cho những tác vụ đòi hỏi nhiều CPU hơn.
Tạo một đối tượng Web Worker
Bây giờ, ta đã có file web worker. Tiếp theo, cần gọi nó từ một trang HTML.
Các dòng sau sẽ kiểm tra xem worker đã tồn tại hay chưa - nó tạo một đối tượng web worker mới và chạy code trong "demo_workers.js":
if (typeof(w) == "undefined") {
w = new Worker("demo_workers.js");
}
Sau đó, ta có thể gửi và nhận tin nhắn từ web worker.
Thêm trình lắng nghe sự kiện "onmessage" vào web worker.
w.onmessage = function(event){
document.getElementById("result").innerHTML = event.data;
};
Khi web worker đăng một thông báo, code trong trình lắng nghe sự kiện sẽ được thực thi. Dữ liệu từ web worker được lưu trữ trong event.data.
Chấm dứt một web worker
Khi một đối tượng web worker được tạo, nó sẽ tiếp tục lắng nghe các thông báo (ngay cả sau khi script bên ngoài chấm dứt) cho đến khi kết thúc.
Để chấm dứt web worker và các tài nguyên máy tính/trình duyệt miễn phí, hãy sử dụng phương thức terminate():
w.terminate();
Sử dụng lại Web Worker
Nếu bạn đặt biến worker thành không xác định, sau khi biến đó bị chấm dứt, bạn có thể sử dụng lại code:
w = undefined;
Code mẫu đầy đủ cho web worker
Code Worker đã xuất hiện trong file .js. Dưới đây là code cho trang 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 Worker và DOM
Vì các web worker ở trong các file bên ngoài, nên chúng không có quyền truy cập vào những đối tượng JavaScript sau:
- Đối tượng cửa sổ
- Đối tượng tài liệu
- Đối tượng cha
Xem thêm:
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
-
HTML cơ bản
-
Giới thiệu về HTML
-
Công cụ soạn thảo HTML
-
Các ví dụ cơ bản về HTML
-
Các phần tử trong HTML
-
Các thuộc tính trong HTML
-
Tiêu đề trong HTML
-
Đoạn văn trong HTML
-
Thuộc tính Style trong HTML
-
Định dạng văn bản trong HTML
-
Các phần tử trích dẫn trong HTML
-
Thẻ chú thích trong HTML
-
Màu sắc trong HTML
-
Cách chèn khoảng trống trong HTML
-
Tạo kiểu cách cho HTML với CSS
-
Các đường dẫn trong HTML
-
Hình ảnh trong HTML
-
Bảng biểu trong HTML
-
Danh sách trong HTML
-
Phần tử khối và nội dòng trong HTML
-
Thuộc tính class trong HTML
-
Thuộc tính id trong HTML
-
Iframe trong HTML
-
JavaScript trong HTML
-
Đường dẫn tập tin trong HTML
-
Phần tử Head trong HTML
-
Layout trong HTML
-
Responsive trong HTML
-
Phần tử mã máy tính trong HTML
-
HTML Entities - Ký tự thực thể trong HTML
-
Symbol - Biểu tượng trong HTML
-
Mã hóa kí tự trong HTML (Charset)
-
Uniform Resource Locators - URL trong HTML
-
HTML và XHTML
-
Thuộc tính Global trong HTML
-
-
Form trong HTML
-
HTML5
-
Đồ họa trong HTML
-
Media trong HTML
-
API trong HTML
-
Ví dụ về HTML
-
Tham chiếu HTML
-
Thẻ HTML
-
Khai báo <!DOCTYPE>
-
Thẻ <!--...-->
-
Thẻ <a>
-
Thẻ <abbr>
-
Thẻ <address>
-
Thẻ <area>
-
Thẻ <article>
-
Thẻ <aside>
-
Thẻ <b>
-
Thẻ <base>
-
Thẻ <bdi>
-
Thẻ <bdo>
-
Thẻ <blockquote>
-
Thẻ <body>
-
Thẻ <br>
-
Thẻ <button>
-
Thẻ <caption>
-
Thẻ <cite>
-
Thẻ <code>
-
Thẻ <col>
-
Thẻ <colgroup>
-
Thẻ <data>
-
Thẻ <datalist>
-
Thẻ <dd>
-
Thẻ <del>
-
Thẻ <details>
-
Thẻ <dfn>
-
Thẻ <div>
-
Thẻ <dialog>
-
Thẻ <dl>
-
Thẻ <embed>
-
Thẻ <em>
-
Thẻ <fieldset>
-
Thẻ <figcaption>
-
Thẻ <figure>
-
Thẻ <footer>
-
Thẻ <h1> đến <h6>
-
Thẻ <header>
-
Thẻ <hr>
-
Thẻ <html>
-
Thẻ <i>
-
Thẻ <iframe>
-
Thẻ <input>
-
Thẻ <ins>
-
Thẻ <kbd>
-
Thẻ <label>
-
Thẻ <legend>
-
Thẻ <li>
-
Thẻ <link>
-
Thẻ <main>
-
Thẻ <map>
-
Thẻ <mark>
-
Thẻ <meter>
-
Thẻ <nav>
-
Thẻ <noscript>
-
Thẻ <object>
-
Thẻ <ol>
-
Thẻ <optgroup>
-
Thẻ <option>
-
Thẻ <output>
-
Thẻ <p>
-
Thẻ <param>
-
Thẻ <picture>
-
Thẻ <pre>
-
Thẻ <progress>
-
Thẻ <q>
-
Thẻ <rp>
-
Thẻ <rt>
-
Thẻ <ruby>
-
Thẻ <s>
-
Thẻ <samp>
-
Thẻ <script>
-
Thẻ <select>
-
Thẻ <search>
-
Thẻ <section>
-
Thẻ <small>
-
Thẻ <source>
-
Thẻ <strong>
-
Thẻ <sub>
-
Thẻ <summary>
-
Thẻ <span>
-
Thẻ <sup>
-
Thẻ <svg>
-
Thẻ <tbody>
-
Thẻ <td>
-
Thẻ <template>
-
Thẻ <textarea>
-
Thẻ <time>
-
Thẻ <thead>
-
Thẻ <title>
-
Thẻ <tr>
-
Thẻ <tfoot>
-
Thẻ <th>
-
Thẻ <track>
-
Thẻ <u>
-
Thẻ <ul>
-
Thẻ <video>
-
Thẻ <wbr>
-
Hướng dẫn AI
Học IT
AI
Hàm Excel