JavaScript là một luồng đơn. Nó có nghĩa là gì và một chủ đề là gì?
Một luồng là một ngữ cảnh thực thi, là tất cả thông tin mà CPU cần để thực thi một luồng lệnh. Vì vậy, thông thường các ứng dụng JS được chứa trong một luồng.
Hãy tưởng tượng trong ứng dụng web của bạn, bạn cần xử lý một tác vụ dài, Dom là trang web bằng ngôn ngữ thông thường sẽ bị đóng băng vì trình thông dịch cần hoàn thành tác vụ trước khi chuyển sang tác vụ tiếp theo. Anh ta không thể xử lý hai nhiệm vụ cùng một lúc, vì vậy khi anh ta hoàn thành nhiệm vụ dài, và sau đó anh ta sẽ có thể cập nhật Dom và sống lại. Giải pháp để tránh điều đó là sử dụng web worker.
Web worker là một tập lệnh JS được thực thi trong nền một cách độc lập. Nhân viên web thường có thể sử dụng nhiều cpu.
Trong trường hợp này, chúng ta sẽ xem cách sử dụng một web worker trong phản ứng.
Thiết lập :
Hãy cùng vui vẻ nào.
Để có thể giao tiếp với nhân viên, chúng tôi sẽ sử dụng onMessage và postMessage ().
Bây giờ chúng ta sẽ viết hàm fibonacci của chúng ta mà chúng ta sẽ được thực thi bởi web worker.
//fibo.worker.js
// eslint-disable-next-line import/no-anonymous-default-export
export default () => {
// eslint-disable-next-line no-restricted-globals
self.onmessage = (message) => {
const nbr = message.data;
var n1 = 0;
var n2 = 1;
var somme = 0;
for (let i = 2; i <= nbr; i++) {
somme = n1 + n2;
n1 = n2;
n2 = somme;
}
const result = nbr ? n2 : n1;
postMessage(result);
};
};
// eslint-disable-next-line import/no-anonymous-default-export
// eslint-disable-next-line no-restricted-globals
//woker-builder.js
export default class WorkerBuilder extends Worker {
constructor(worker) {
const code = worker.toString();
const blob = new Blob([`(${code})()`]);
return new Worker(URL.createObjectURL(blob));
}
}
import WorkerBuilder from './worker/woker-builder';
import Worker from './worker/fibo.worker';
instance = new WorkerBuilder(Worker);
componentDidMount() {
instance.onmessage = (message) => {
if (message) {
console.log("Message from worker", message.data);
}
};
}
<button onClick ={() => instance.postMessage(5)}>
Send Message
</button>
import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import WorkerBuilder from "./worker/woker-builder";
import FiboWorker from "./worker/fibo.worker";
const instance = new WorkerBuilder(FiboWorker);
class App extends Component {
componentDidMount() {
instance.onmessage = (message) => {
if (message) {
console.log("Message from worker", message.data);
}
};
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Web worker in React
</p>
<button
onClick={() => {
instance.postMessage(5);
}}
>Send Message</button>
</header>
</div>
);
}
}
export default App;
Nếu chúng ta đi sâu hơn vào bảng điều khiển trong tab nguồn, chúng ta có thể thấy ở trên cùng bên phải, chúng ta có hai luồng là main và fibo worker có tên là f18f83d0–6ed0–484e-86f1–6d1938793085
Tôi hy vọng bạn đã học được điều gì đó từ bài giảng này, cảm ơn bạn đã đọc.
Vào năm 2022, tôi chuyển từ vai trò phi kỹ thuật sang vai trò an ninh mạng. Tôi đã có bằng tiếng Đức đầu tiên, tôi biết bạn đang bị sốc và tò mò về cách tôi có thể chuyển đổi thành công, Chà, nó chỉ xảy ra thôi.
Giới thiệu Đột quỵ là một trường hợp cấp cứu y tế có thể tấn công bất kỳ ai vào bất kỳ lúc nào. Nó xảy ra khi lưu lượng máu đến một phần của não bị gián đoạn, dẫn đến mất chức năng não đột ngột.
Trong thế giới kết nối ngày nay, mối đe dọa tấn công mạng phổ biến hơn bao giờ hết. Tội phạm mạng và các tác nhân quốc gia liên tục tìm cách khai thác các lỗ hổng và đánh cắp dữ liệu có giá trị, gây rủi ro đáng kể cho các tổ chức thuộc mọi quy mô.
Gần đây, tôi đã truy cập Linkedin, mạng xã hội chuyên nghiệp lớn nhất thế giới và tìm thấy các bài đăng của các nhà thiết kế tự do mà tôi theo dõi, những người đã thu hút sự chú ý của tôi. Tất cả họ đều đăng ảnh chụp từ máy bay, trên bãi biển với máy tính xách tay của họ, từ bể bơi và văn phòng với những khung cảnh tuyệt vời.
Khi bạn gửi yêu cầu tới facebook.com, máy tính của bạn sẽ tra cứu tên miền để dịch tên miền đó thành địa chỉ IP để máy tính của bạn có thể thực hiện kết nối đó.
Chúng ta thường thấy mình phải vật lộn để thực hiện những gì chúng ta biết là tốt cho chúng ta. Từ việc nói với một người quan trọng khác rằng chúng ta yêu họ đến việc nhớ nói chuyện như một tên cướp biển, sẽ luôn có những người cho rằng không cần thiết phải tổ chức các sự kiện trong ngày, tuần hoặc tháng vì họ đã làm những việc đó rồi.