当前位置:首页 > 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 并行执行多个异步操作:

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 函数

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

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 实现继承

js 实现继承

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

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点…