面试官:如何手动控制请求的个数
你可以使用一个请求队列来控制并发请求的数量,确保同时只有指定个数的请求在执行。以下是一个简单的示例代码,使用 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
标签:
暂无标签
版权申明
本文系作者 @K 原创发布在前端面试题大全站点。未经许可,禁止转载。
暂无评论数据