xunfeiAI/node_modules/miniprogram-queue/README.md

120 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2023-10-16 09:29:44 +08:00
# miniprogram-queue [![npm version](https://badge.fury.io/js/miniprogram-queue.svg)](https://npmjs.com/package/miniprogram-queue)
> Queue Package for MiniProgram API
>
> 小程序底层操作队列化(`wx.request`, `wx.downloadFile`,`wx.uploadFile`)
>
> [miniprogram-network](https://npmjs.com/package/miniprogram-network)默认队列实现
Features:
* [x] 可自动注入/手动管理
* [x] [取消操作(`abort`)](#abort-取消操作)
* [x] [进度/header回调](#progress-进度支持)
* [x] [插队](#jump-插队)
* [x] 时间戳
* [x] timeout 自定义超时时间
* [ ] 动态收缩扩展
## Install(安装)
```
npm i miniprogram-queue
```
## Usage(使用)
```js
import {WxQueue} from 'miniprogram-queue';
//创建请求队列
const requestQueue = new WxQueue(wx.request,10);
// const uploadQueue = new WxQueue(wx.uploadFile,10);
// const downloadQueue = new WxQueue(wx.downloadFile,10);
// 发送请求
const task = requestQueue.push({
url:'https://github.com/NewFuture/miniprogram-network/'
});
// task.abort() 可取消操作
```
## API
### 参数
与官网API参数兼容 支持 扩展参数:
* `onProgressUpdate` 进度回调函数
* `onHeadersReceived` 响应头回调函数
* `jump` (默认`false`)是否插队
* `timestamp` (默认`false`) 是否记录时间戳,是则complete回调中会包含 一个`time`字段
```ts
{
send: number,
response: number
}
```
兼容API
* [request](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html)
* [downloadFile](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html)
* [uploadFile](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/wx.uploadFile.html)
同时 `downloadFile``uploadFile` 支持通过[process 参数](#progress) 之间设置进度回调
### jump (插队)
```js
//第二个参数为true时优先级最高
requestQueue.push({
url:'https://github.com/',
jump:true,//插队
});
```
## Abort (取消操作)
所有操作返回一个`Task`对象,可取消操作
注意: 和官方API一致 **取消时依然会执行complete(如果配置了)**
* 自动注入方式
```js
var task = wx.request(obj);
task.abort();
```
* 手动push
```js
var task = queue.push(obj);
task.abort();
```
## Progress (进度支持)
* `DownloadTask.onProgressUpdate(function callback)`
* `UploadTask.onProgressUpdate(function callback)`
> 小程序`onProgressUpdate`API的接口设计上不太合理,
> 这个接口放在请求发生时更合适,而非在Task创建后。
此处保留了对onProgressUpdate的兼容适配,同时提供了可通过参数(`progress`)传入的方法
```js
const task =uploadQueue.push({
// 其他参数
onProgressUpdate:processCallback// callback function
onHeadersReceived:console.log
});
// function processCallback(progress,currentBytes,totalBytes){}
```
```js
// obj update object
const task = wx.uploadFile(obj);
// 保留原生调用方式支持
task.onProgressUpdate(processCallback); // callback function
// function processCallback(progress,currentBytes,totalBytes){}
```