1.修改pending加载策略,修复未落盘而下一个请求到来,重复进行网络请求的问题

Signed-off-by: zhoulisheng1 <zhoulisheng1@huawei.com>
This commit is contained in:
zhoulisheng1 2023-05-06 10:19:43 +08:00
parent bb547da285
commit 3df0657c84
3 changed files with 20 additions and 0 deletions

View File

@ -44,6 +44,9 @@ export class ImageKnifeData {
static PNG = 'png';
static BMP = 'bmp';
static WEBP = 'webp';
waitSaveDisk = false;
imageKnifeType: ImageKnifeType;
drawPixelMap: DrawPixelMap;
drawGIFFrame: DrawGIFFrame;

View File

@ -431,10 +431,23 @@ export class RequestOption {
break;
}
}
if(imageKnifeData.waitSaveDisk){
// 等落盘结束后主动调用#removeCurrentAndSearchNext方法
}else{
// 非落盘情况,直接进行寻找下一个加载
globalThis.ImageKnife.removeRunning(this);
}
// 加载成功之后
globalThis.ImageKnife.removeRunning(this);
}
// 图片文件落盘之后会自动去寻找下一个数据加载
removeCurrentAndSearchNext(){
globalThis.ImageKnife.removeRunning(this);
}
loadError(err) {
LogUtil.log("loadError:" + err);
LogUtil.log("loadError stack=:" + JSON.stringify(err.stack));

View File

@ -520,12 +520,16 @@ export class RequestManager {
this.mMemoryCacheProxy.putValue(this.options.generateCacheKey, imageKnifeData);
let save2DiskCache = async (arraybuffer) => {
await this.mDiskCacheProxy.putValue(this.options.generateDataKey, arraybuffer)
// 落盘之后需要主动移除当前request并且调用下一个加载
let removeCurrentAndSearchNextRun = this.options.removeCurrentAndSearchNext.bind(this.options)
removeCurrentAndSearchNextRun();
}
let runSave2Disk = (resolve, reject) => {
resolve(source);
}
let promise = new Promise(runSave2Disk);
promise.then(save2DiskCache);
imageKnifeData.waitSaveDisk = true;
onComplete(imageKnifeData);
}