当前位置:首页 > JavaScript

js实现并发

2026-03-13 18:51:31JavaScript

JavaScript 实现并发的方法

JavaScript 是单线程语言,但可以通过异步编程和 Web Workers 实现并发效果。

异步编程实现并发

使用 Promise.all 可以并行执行多个异步操作:

const promise1 = fetch('https://api.example.com/data1');
const promise2 = fetch('https://api.example.com/data2');

Promise.all([promise1, promise2])
  .then(([response1, response2]) => {
    // 处理两个请求的结果
  })
  .catch(error => {
    // 处理错误
  });

Web Workers 实现真正并发

Web Workers 允许在后台线程运行脚本:

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

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

使用 async/await 控制并发

限制并发数量的实现方式:

js实现并发

async function concurrentRequests(urls, maxConcurrent) {
  const results = [];
  const executing = new Set();

  for (const url of urls) {
    const promise = fetch(url);
    executing.add(promise);
    promise.then(() => executing.delete(promise));

    results.push(await promise);

    if (executing.size >= maxConcurrent) {
      await Promise.race(executing);
    }
  }

  return Promise.all(results);
}

注意事项

  • 浏览器环境有最多 6 个 HTTP 请求的并发限制
  • Node.js 可以使用 worker_threads 模块实现多线程
  • 共享内存需要使用 SharedArrayBuffer 但要小心竞态条件

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…