[记录存档] 前端实现请求队列

piziji4个月前随手写写151


新建文件: handleQueue.js

import axios from 'axios';

/**
 * 处理请求队列的函数,具有最大并发限制。
 * 
 * @param {Array} reqs - 请求函数数组。
 * @param {number} maxConcurrency - 最大并发请求数。
 */
export const handleQueue = async (reqs, maxConcurrency = 6) => {
  reqs = reqs || [];

  const requestQueue = () => {
    const queue = [];
    let current = 0;

    const dequeue = async () => {
      while (current < maxConcurrency && queue.length) {
        current++;
        const requestPromiseFactory = queue.shift();
        try {
          await requestPromiseFactory();
        } catch (error) {
          console.log(error);
        } finally {
          current--;
          dequeue();
        }
      }
    };

    return (requestPromiseFactory) => {
      queue.push(requestPromiseFactory);
      dequeue();
    };
  };

  const enqueue = requestQueue();

  for (let i = 0; i < reqs.length; i++) {
    enqueue(async () => await axios.get(`/api/test${i}`));
  }
};

使用示例:

// 引入 axios 和 handleQueue 函数
import axios from 'axios';
import { handleQueue } from './path/to/handleQueue';

// 创建一个请求函数数组
const requests = [
  () => axios.get('/api/test1'),
  () => axios.get('/api/test2'),
  () => axios.get('/api/test3'),
  () => axios.get('/api/test4'),
  // 添加更多请求
];

// 调用 handleQueue 函数
handleQueue(requests, 4) // 这里设置最大并发数为 4
  .then(() => {
    console.log('所有请求已完成');
  })
  .catch(error => {
    console.log('发生错误:', error);
  });


返回列表

上一篇:第二台NAS新鲜出炉~~~~

没有最新的文章了...

相关文章

更换新设备-前行者 V98 Pro 键鼠套

更换新设备-前行者 V98 Pro 键鼠套

原来的罗技套装接收器不小心碰坏了,所以换个新键盘。第一次用充最款的无线键盘,试试效果。200米,用着还可以还带灯光,按键比罗技(老了)那款要好些,鼠标没有罗技的手感好。除JD快递用了2天才送以外都比较...

又入一款键盘-前行者 V99

又入一款键盘-前行者 V99

前段时间购入的V98用着不错,就想着买个新的放公司用。前行者V99 寒酥紫旗舰版,声音和手感都不错。...

咬咬牙,准备升级3D打印机......

咬咬牙,准备升级3D打印机......

现在的小树T5用着还可以,就是160x160x160的尺寸还是小了点,好多大模型都打不了。年前预定了小树的CXY4多色版,尺寸310x310x310看参数很光错的,就是到现在还没发货,所以退货了,换个...

服务器到期更换

服务器到期更换

服务器到期更换已经完成,数据丢失...

小树返厂了,漫长的等待中......

小树返厂了,漫长的等待中......

打印中断问题没有完全解决,我的能力有点低,客服让返厂检测一下。...

点是真的背,硬盘又双叒叕坏了......

点是真的背,硬盘又双叒叕坏了......

上个月笔记本硬盘才坏过,前天nas硬盘又坏了......两坏2T硬盘光荣中枪,可能也是年头多了,该退休了。耗时 22个小时 第一块硬盘重要文件恢复了,还是机械硬盘好,还有机会恢复,上次笔记本固态坏了,...

召唤伊斯特瓦尔