当前位置:首页 > JavaScript

js 实现线程

2026-03-14 12:35:22JavaScript

JavaScript 是单线程语言,但可以通过以下方式模拟多线程或实现并发操作:

Web Workers

Web Workers 允许在后台运行脚本,独立于主线程执行任务,避免阻塞 UI。

// 主线程代码
const worker = new Worker('worker.js');
worker.postMessage({ data: 'start' });

worker.onmessage = (e) => {
  console.log('Received from worker:', e.data);
};

// worker.js
self.onmessage = (e) => {
  console.log('Worker received:', e.data);
  self.postMessage({ result: 'Processed data' });
};

异步编程

利用 Promise、async/await 实现非阻塞操作:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  console.log(data);
}
fetchData();

setTimeout/setInterval

通过事件循环模拟并发:

setTimeout(() => {
  console.log('Delayed execution');
}, 1000);

setInterval(() => {
  console.log('Repeating task');
}, 2000);

SharedArrayBuffer 和 Atomics

用于线程间共享内存(需注意线程安全):

js  实现线程

const sharedBuffer = new SharedArrayBuffer(1024);
const sharedArray = new Int32Array(sharedBuffer);

// 线程1
Atomics.store(sharedArray, 0, 123);

// 线程2
const value = Atomics.load(sharedArray, 0);

注意事项

  • Web Workers 无法直接访问 DOM
  • 跨线程通信需通过 postMessage
  • 共享内存操作需使用原子操作保证安全
  • 大量计算任务建议使用 Worker 避免主线程卡顿

标签: 线程js
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…