https://github.com/cnwhy/axios-extra
Support for maximum concurrent settings and retry
https://github.com/cnwhy/axios-extra
axios concurrent queue retry
Last synced: 3 months ago
JSON representation
Support for maximum concurrent settings and retry
- Host: GitHub
- URL: https://github.com/cnwhy/axios-extra
- Owner: cnwhy
- License: mit
- Created: 2019-01-08T18:10:13.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-10-11T10:04:11.000Z (over 2 years ago)
- Last Synced: 2025-10-21T02:36:56.654Z (8 months ago)
- Topics: axios, concurrent, queue, retry
- Language: JavaScript
- Size: 16.6 KB
- Stars: 8
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# axios-extra
[](https://coveralls.io/github/cnwhy/axios-extra?branch=master) [](https://github.com/cnwhy/axios-extra/actions/workflows/test.yml)
通过 ES6 的`Proxy`对像, 让 [axios](https://github.com/axios/axios) 集成 [promise-queue-plus](https://github.com/cnwhy/promise-queue-plus), 使 `axios` 支持 **最大并发** 及 **出错重试** 的功能.
> 未添加任何 API, 你完全可以像使用 `axios` 那样使用 `axios-extra`;
> 由于使用了`Proxy`,请注意兼性.
## API
### axios.create(config)
现在可以通过设置 `maxConcurrent` 和 `queueOptions` 属性, 设置最大并发及重试次数.
```js
// axios 并发为10, 自动重试为0
const axios = require('axios-extra'); //默认最大并发 10, 重试 0;
// 创建一个 并发为1, 自动重试为3的 axios;
let axios1 = axios.create({
maxConcurrent:1, //并发为1
queueOptions: {
retry:3, //请求失败时,最多会重试3次
retryIsJump: true //是否立即重试, 否则将在请求队列尾部插入重试请求
}
});
let {stop, start, clear} = axios1.requestQueue; // 暴露内部的队列对像,可以使用 stop start clear 等 API;
```
> 更多 `queueOptions` 配制可参看[这里](https://github.com/cnwhy/promise-queue-plus#queuepushpromisefun-args-options)
### axios(config) 及 get|post|request|delete|head|options|put|patch
`config`参数可以为某一次的请求设置 `queueOptions`;
```js
axios.get('https://www.google.com',{
queueOptions : {
retry: 5
}
});
```
### `create(axios,maxConcurrent,queueOptions)` 扩展现有 `axios`
扩展项目中现有 `axios`,保证 `axios` 版本.
```js
const aec = require('axios-extra/create');
const axios = aec(requeir('axios'), 5, { retry: 5 });
```