# http-control
**Repository Path**: Jokerdd/http-control
## Basic Information
- **Project Name**: http-control
- **Description**: http并发请求控制
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-29
- **Last Updated**: 2025-07-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# http-control 🚀
**智能 HTTP 请求控制库 | 并发管理 · 请求池优化 · Vue3 深度集成**
[](https://www.npmjs.com/package/http-control)
[](https://github.com/yourname/http-control/blob/main/LICENSE)
---
## 特性亮点
- 🎯 **精准并发控制** - 控制并发数,防止http请求占满浏览器资源,使页面卡死
- 🛠 **多框架适配** - 原生支持 Vue3 插件化集成
- 📦 **轻量级** - 轻量级实现(核心代码 < 3KB)
- 🦾 **全类型支持** - 完整的 TypeScript 类型定义
---
## 安装
```bash
# NPM
npm install http-control
# Yarn
yarn add http-control
# PNPM
pnpm add http-control
```
---
## 快速上手
### 基础用法
```typescript
import HttpControl from 'http-control'
// 初始化实例(最大并发数=2)
const httpController = new HttpControl(2)
// 添加请求到队列
const task = [
async () => fetch('https://api.example.com/data'),
async () => fetch('https://api.example.com/data'),
]
const result = await httpController.addToPool(task)
.catch(err => {
console.error('请求失败:', err)
return null
})
// 或使用回调函数
httpController.addToPool(task, true, () => {
console.log("请求完成")
})
```
### Vue3 集成
在vue中注入,可全局使用同一个并发池
```typescript
// main.ts
import { createApp } from 'vue'
import { useHttpControl } from 'http-control'
const app = createApp(App)
app.use(useHttpControl, 3) // 设置最大并发数为2
```
```vue
```
---
## 核心 API
### 构造函数
```typescript
new HttpControl(
maxConcurrent: number, // 最大并发数
options?: {
useReject?: boolean // 出错后是否停止剩余请求,默认true;为true时,全部成功返回成功结果数组,失败返回错误结果;为false时,返回包含成功和失败的数组
timeout?: number // 全局超时时间(默认 5000ms)
retry?: number // 失败重试次数(默认 1)
}
)
```
### 实例方法
#### `addToPool(task: Array<() => Promise>, cb?: (res: any) => void, config?): Promise`
| 参数 | 类型 | 必填 | 说明 |
|---------|---------------------|------|--------------------------|
| task | `Array<() => Promise>` | 是 | 返回 Promise 的异步函数 |
| cb | `(res: any) => void` | 否 | 回调函数 |
| config | `{}` | 否 | 任务级配置 |
**返回值**:原始 Promise 的代理对象,支持链式调用
---
## 高级配置
### Vue 插件选项
```typescript
app.use(httpControl, {
poolSize: 3, // 并发池容量
injectKey: '$httpQueue'
})
```
---
## 最佳实践
### 文件分片上传
```typescript
async function uploadChunk(chunk: Blob) {
return () => axios.post('/upload', chunk)
}
// 批量处理
const chunks = [/* 分片数组 */]
await httpController.addToPool(chunks.map(uploadChunk))
```
## 许可证
[MIT License](LICENSE) © 2024 Jokerator
---
> 提示:生产环境建议配合 axios/fetch 等 HTTP 客户端使用