当前位置:首页 > JavaScript

js实现并发

2026-01-31 20:51:34JavaScript

实现并发的方法

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

Web Workers

Web Workers 允许在后台线程中运行脚本,避免阻塞主线程。适用于 CPU 密集型任务。

js实现并发

// 主线程
const worker = new Worker('worker.js');
worker.postMessage({ data: 'some data' });
worker.onmessage = (e) => {
  console.log('Message from worker:', e.data);
};

// worker.js
self.onmessage = (e) => {
  const result = processData(e.data);
  self.postMessage(result);
};

Promise 和 async/await

利用异步编程模型处理并发任务,适用于 I/O 密集型操作。

async function fetchConcurrently(urls) {
  const promises = urls.map(url => fetch(url));
  const responses = await Promise.all(promises);
  return Promise.all(responses.map(res => res.json()));
}

setTimeout/setInterval

通过事件循环模拟并发,适合简单的定时任务。

js实现并发

function task1() {
  console.log('Task 1');
  setTimeout(task1, 1000);
}

function task2() {
  console.log('Task 2');
  setTimeout(task2, 1500);
}

task1();
task2();

SharedArrayBuffer 和 Atomics

用于真正的内存共享并发,但需要谨慎使用以避免竞态条件。

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

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

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

Cluster 模块 (Node.js)

在 Node.js 中利用多核 CPU 实现真正的并行处理。

const cluster = require('cluster');
const os = require('os');

if (cluster.isMaster) {
  const cpus = os.cpus().length;
  for (let i = 0; i < cpus; i++) {
    cluster.fork();
  }
} else {
  // Worker代码
  require('./server');
}

注意事项

  • Web Workers 无法直接访问 DOM
  • 共享内存操作需要同步机制
  • 异步代码要注意错误处理
  • Node.js 集群需要处理进程间通信

选择合适的方法取决于具体应用场景和性能需求。I/O 密集型任务适合异步模式,CPU 密集型任务应考虑 Web Workers 或集群。

标签: js
分享给朋友:

相关文章

js实现分页

js实现分页

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

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…