enhanceUniApi
增强uni api
- 将uni api包装为Promise形式
- 提供统一的错误处理和用户反馈
示例
ts
import { enhanceUniApi } from '@base-web-kits/base-tools-uni';
// 基本用法
const downloadPromise = enhanceUniApi(uni.downloadFile, 'downloadFile');
const result = await downloadPromise({ url: 'https://example.com/file.pdf' });
// 带加载提示和成功提示
const uploadPromise = enhanceUniApi(uni.uploadFile, 'uploadFile');
await uploadPromise(
{
url: 'https://api.example.com/upload',
filePath: tempFilePath,
name: 'file',
},
{
showLoading: '上传中...',
toastSuccess: '上传成功',
},
);
// 自定义错误处理
const requestPromise = enhanceUniApi(uni.request, 'request');
await requestPromise(
{ url: 'https://api.example.com/data' },
{
toastError: (error) => {
// 只在非取消错误时显示提示
return !error.errMsg.includes('cancel') ? '请求失败' : false;
},
},
);
// 完全自定义配置
const saveImagePromise = enhanceUniApi(uni.saveImageToPhotosAlbum, 'saveImageToPhotosAlbum');
await saveImagePromise(
{ filePath: tempFilePath },
{
showLoading: '保存中',
toastSuccess: (res) => '图片已保存到相册',
toastError: '保存失败,请检查权限',
showLog: true,
},
);
// 获取task对象
await enhanceUniApi(uni.downloadFile, 'downloadFile')(
{ url: 'xx' },
{
onTaskReady: (task) => {
task.onProgressUpdate((res) => console.log('progress', res));
},
},
);参数
uniApi- 需要包装的uni API函数(必需)apiName- uni API 名称,用于日志输出(可选,推荐传入以保证日志准确性, 否则默认'enhanceUniApi')
返回值
- 返回一个函数,该函数接收两个参数:
option- uni API的原始参数(可选)config- 包装配置(可选)showLoading- 是否显示加载提示,默认false(支持字符串自定义文本)toastSuccess- 操作成功的toast提示,默认false(支持函数返回自定义文本)toastError- 是否显示操作失败的详细错误信息,默认true(支持函数判断是否显示)showLog- 是否显示日志,默认trueresMap- 响应数据的转换, 如解密操作 (返回值在成功日志中输出'resMap'字段)logExtra- 成功和失败时,额外输出的日志数据 (可覆盖内部log参数,如'name')onTaskReady- 初始化task对象时的回调函数,默认undefined(支持自定义task事件监听)
版本
- 1.2.0 新增