当前位置:首页 > 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防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…