你可以使用一个请求队列来控制并发请求的数量,确保同时只有指定个数的请求在执行。以下是一个简单的示例代码,使用 JavaScript 来实现:

class RequestQueue {
    constructor(maxConcurrentRequests) {
        this.maxConcurrentRequests = maxConcurrentRequests;
        this.queue = [];
        this.activeRequests = 0;
    }

    add(request) {
        if (this.activeRequests < this.maxConcurrentRequests) {
            this.execute(request);
        } else {
            this.queue.push(request);
        }
    }

    execute(request) {
        this.activeRequests++;
        request()
            .then(() => {
                this.activeRequests--;
                this.next();
            })
            .catch(() => {
                this.activeRequests--;
                this.next();
            });
    }

    next() {
        if (this.queue.length > 0) {
            const request = this.queue.shift();
            this.execute(request);
        }
    }
}

// 创建一个最大并发请求数为3的请求队列
const requestQueue = new RequestQueue(3);

// 模拟发送请求的函数
function sendRequest() {
    return new Promise((resolve, reject) => {
        // 这里可以替换为实际的请求函数
        setTimeout(() => {
            console.log('请求完成');
            resolve();
        }, 1000); // 模拟请求延迟1秒
    });
}

// 模拟发送10个请求
for (let i = 0; i < 10; i++) {
    const request = () => sendRequest();
    requestQueue.add(request);
}

在上面的代码中,我们首先定义了一个 RequestQueue 类来管理请求队列。该类接受一个 maxConcurrentRequests 参数,用于指定最大并发请求数。然后我们创建了一个 add 方法来添加请求到队列中,如果当前活动的请求数量小于最大并发请求数,就直接执行请求;否则将请求添加到队列中。execute 方法用于执行请求,并在请求完成后调用 next 方法来执行队列中的下一个请求。

通过这种方式,你可以确保同时最多只有三个请求在执行,其他请求会被放入队列中,等待当前请求完成后再依次执行。

分类: JavaScript 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录