当前位置:首页 > JavaScript

js怎么实现并发

2026-02-02 17:32:00JavaScript

实现并发的方法

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

使用 Web Workers

Web Workers 允许在后台线程中运行脚本,避免阻塞主线程。创建一个 worker 并与之通信:

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

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

使用 Promise 和 async/await

通过 Promise.allPromise.allSettled 并行执行多个异步操作:

js怎么实现并发

async function fetchAll() {
  const [res1, res2] = await Promise.all([
    fetch('https://api.example.com/data1'),
    fetch('https://api.example.com/data2')
  ]);
  const data1 = await res1.json();
  const data2 = await res2.json();
  console.log(data1, data2);
}

使用 setTimeout 或 setInterval

虽然 JavaScript 是单线程,但可以通过事件循环模拟并发:

setTimeout(() => console.log('Task 1'), 0);
setTimeout(() => console.log('Task 2'), 0);

使用 Generator 函数

通过生成器函数实现协程风格的并发:

js怎么实现并发

function* tasks() {
  yield task1();
  yield task2();
}
const iterator = tasks();
iterator.next();
iterator.next();

使用事件发射器(EventEmitter)

Node.js 中可以通过事件驱动实现并发:

const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('event', () => console.log('Event handled'));
emitter.emit('event');

使用集群(Cluster)

Node.js 中利用多核 CPU 的集群模块:

const cluster = require('cluster');
if (cluster.isMaster) {
  cluster.fork();
  cluster.fork();
} else {
  // Worker code
}

注意事项

  • Web Workers 无法直接访问 DOM
  • Promise 并非真正的并行,而是异步调度
  • 在 Node.js 中可以使用 child_processworker_threads 实现更高级的并发

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…