- 使用downloadFile下载文件超时,文件较大的情况下载timeout时间内未能下完就报超时
我是使用uniapp来写的,代码非常简单,主要关注downloadFile函数即可,就是一个下载功能,通过main函数传入的变量tempFileURLs下载文件 注意: main函数中的tempFileURLs地址随时可能失效,请替换为其他的文件地址测试 问题: 例如我要下载的文件是54MB,但是用户的网络环境只能1MB/s,downloadFile设置的timeout是10秒,10秒到了之后就显示time out的报错了 难道time out 不是要失去服务器的连接后才报超时错误嘛? 难道说这个参数是指不论与服务器的连接是否断开,只要时间到了就报错? /** * @desc 函数节流,单位时间内多次执行只执行一次 * @param func 函数 * @param wait 延迟执行毫秒数 * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 */ function throttle(func, wait = 1000, type = 1) { let previous = 0; let timeout; return function () { let context = this; let args = arguments; if (type === 1) { let now = Date.now(); if (now - previous > wait) { func.apply(context, args); previous = now; } } else if (type === 2) { if (!timeout) { timeout = setTimeout(() => { timeout = null; func.apply(context, args) }, wait) } } } } async function main() { const tempFileURLs = "https://l36.gdl.netease.com/nshm_956773_v2.2.4_33e1ae06622da750e207760b3e94dd97.apk?key1=3ff60ef3effbb87fe7c9255811a6efea&key2=678d06d2" const objPath = `${wx.env.USER_DATA_PATH}/dictionary/` const fileName = "dictionary.br" downloadFile(tempFileURLs, objPath, fileName) } function downloadFile(link, objPath, fileName,timeout = 10000) { return new Promise((resolve, reject) => { const csvDownloadTask = uni.downloadFile({ url: link, //下载的url timeout: timeout, success: (res) => { if (res.statusCode === 200) { console.log(`文件${fileName}下载成功`, res); resolve(res) // return true } else { console.error( `文件${fileName}下载失败,code:${res.statusCode}`); reject(res.statusCode) return false } }, fail(e) { console.error(`文件${fileName}下载失败:`, e); reject(e) return false } }); csvDownloadTask.onProgressUpdate(throttle((res) => { console.log(`${fileName}展示进度obj:`, res); console.log(`${fileName}下载进度:${res.progress}`); console.log( `${fileName}已经下载的数据长度${res.totalBytesWritten}`); console.log(`${fileName}预期需要下载的数据总长度:${res .totalBytesExpectedToWrite}`); }, 300)); }) }
01-19 - 请各位云开发是怎么设计商城的图片压缩展示逻辑的?是压缩和不压缩的图片都上传服务器还是怎么设计?
如题,我想用云开发设计一个商城,现在图片需要点击Banner中的item进入高清图片,此时遇到了一个问题就是,我是应该在每个商品的数据库中存储一个未压缩的图片和已压缩的图片还是一开始就请求高清的图片,由客户端进行展示的时候将此图片进行压缩?最后点击Banner才展示未压缩的图片?还是说有其他的思路呢?
2022-07-05