// 创建下载任务
const dtask = plus.downloader.createDownload(it.source, data, function(d, status) {});
// 枚举下载任务并筛选出特定条件的任务
async enumerate(num) {
const id = 1;
try {
// 使用 plus.downloader.enumerate 枚举下载任务
const enumCBs = await new Promise((resolve, reject) => {
plus.downloader.enumerate(resolve, num);
});
// 使用 Promise.all 等待所有异步操作完成
const filteredTasks = await Promise.all(enumCBs.map(task => {
return new Promise((resolve, reject) => {
// 解析本地文件系统的URL
plus.io.resolveLocalFileSystemURL(task.filename,
(entry) => {
// 判断条件是否符合
if (task.options.cata_id === id) {
resolve(task); // 符合条件,将任务添加到结果数组中
} else {
resolve(null); // 不符合条件,返回 null
}
},
(error) => {
// 处理解析失败的情况
console.error('解析本地文件系统URL失败:', error);
resolve(null); // 解析失败,返回 null
}
);
});
}));
// 过滤掉为 null 的任务,并返回结果数组
return filteredTasks.filter(task => task !== null);
} catch (error) {
// 捕获枚举任务失败的情况
console.error('枚举下载任务失败:', error);
return []; // 返回空数组表示没有符合条件的任务
}
},
const taskTypes = [0, 1, 2, 3, 4, 5];
const res = await Promise.all(taskTypes.map(type => this.enumerate(type)));
// 合并所有枚举结果
const results = res.flat();
// 创建一个映射以快速查找下载任务
const resultsMap = new Map(results.map(task => [task.options.id, task]));
const find = resultsMap.get(v.id);
find.state 这个状态显示的状态都是正常的
let isFilename = find.filename.includes('.');
find.filename 这个是不正常的,我现在是不管什么状态如果没有这个是的后缀就强制重新下载解决的
0 个回复