支持全局配置是否在子线程请求加载图片,默认在子线程
Signed-off-by: madixin <madixin@huawei.com>
This commit is contained in:
parent
52e5d1f5bf
commit
36875b0534
|
@ -1,5 +1,6 @@
|
||||||
## 3.0.0-rc.6
|
## 3.0.0-rc.6
|
||||||
- 支持多种组合变换
|
- 支持多种组合变换
|
||||||
|
- 支持全局配置是否在子线程请求加载图片,默认在子线程
|
||||||
|
|
||||||
## 3.0.0-rc.5
|
## 3.0.0-rc.5
|
||||||
- 图片加载事件增加请求开始的回调,以及修复有缓存时,没有回调的bug
|
- 图片加载事件增加请求开始的回调,以及修复有缓存时,没有回调的bug
|
||||||
|
|
|
@ -35,6 +35,9 @@ export class ImageKnife {
|
||||||
// 文件缓存
|
// 文件缓存
|
||||||
private fileCache?: FileCache
|
private fileCache?: FileCache
|
||||||
private dispatcher: ImageKnifeDispatcher = new ImageKnifeDispatcher()
|
private dispatcher: ImageKnifeDispatcher = new ImageKnifeDispatcher()
|
||||||
|
// 配置全局是否在子线程加载图片请求
|
||||||
|
private _isRequestInSubThread: boolean = true;
|
||||||
|
|
||||||
headerMap: Map<string, Object> = new Map<string, Object>(); //定义全局map
|
headerMap: Map<string, Object> = new Map<string, Object>(); //定义全局map
|
||||||
|
|
||||||
public static getInstance(): ImageKnife {
|
public static getInstance(): ImageKnife {
|
||||||
|
@ -47,6 +50,15 @@ export class ImageKnife {
|
||||||
private constructor() {
|
private constructor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public set isRequestInSubThread(value: boolean) {
|
||||||
|
this._isRequestInSubThread = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get isRequestInSubThread(): boolean {
|
||||||
|
return this._isRequestInSubThread;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化文件缓存
|
* 初始化文件缓存
|
||||||
* @param context 上下文
|
* @param context 上下文
|
||||||
|
|
|
@ -39,6 +39,7 @@ import {
|
||||||
RequestJobRequest
|
RequestJobRequest
|
||||||
} from './model/ImageKnifeData'
|
} from './model/ImageKnifeData'
|
||||||
import { combineArrayBuffers } from './model/utils';
|
import { combineArrayBuffers } from './model/utils';
|
||||||
|
import { BusinessError } from '@kit.BasicServicesKit';
|
||||||
|
|
||||||
export class ImageKnifeDispatcher {
|
export class ImageKnifeDispatcher {
|
||||||
// 最大并发
|
// 最大并发
|
||||||
|
@ -141,6 +142,19 @@ export class ImageKnifeDispatcher {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let isWatchProgress : boolean = false
|
||||||
|
|
||||||
|
// 回调请求开始
|
||||||
|
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
||||||
|
if (requestWithSource.source === ImageKnifeRequestSource.SRC && requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadStart !== undefined) {
|
||||||
|
requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadStart()
|
||||||
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadStart:" + currentRequest.imageKnifeOption.loadSrc)
|
||||||
|
}
|
||||||
|
if (requestWithSource.request.imageKnifeOption.progressListener !== undefined && requestWithSource.source === ImageKnifeRequestSource.SRC) {
|
||||||
|
isWatchProgress = true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let request: RequestJobRequest = {
|
let request: RequestJobRequest = {
|
||||||
context: currentRequest.context,
|
context: currentRequest.context,
|
||||||
src: imageSrc,
|
src: imageSrc,
|
||||||
|
@ -155,74 +169,114 @@ export class ImageKnifeDispatcher {
|
||||||
.isFileCacheInit() ? currentRequest.imageKnifeOption.writeCacheStrategy : CacheStrategy.Memory, // 未初始化文件缓存时,不写文件缓存
|
.isFileCacheInit() ? currentRequest.imageKnifeOption.writeCacheStrategy : CacheStrategy.Memory, // 未初始化文件缓存时,不写文件缓存
|
||||||
engineKey: this.engineKey,
|
engineKey: this.engineKey,
|
||||||
signature: currentRequest.imageKnifeOption.signature,
|
signature: currentRequest.imageKnifeOption.signature,
|
||||||
requestSource
|
requestSource: requestSource,
|
||||||
|
isWatchProgress: isWatchProgress,
|
||||||
|
memoryKey: memoryKey
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (ImageKnife.getInstance().isRequestInSubThread){
|
||||||
// 启动线程下载和解码主图
|
// 启动线程下载和解码主图
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_Task.start:" + currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_Task.start:" + currentRequest.imageKnifeOption.loadSrc)
|
||||||
let task = new taskpool.Task(requestJob, request)
|
let task = new taskpool.Task(requestJob, request)
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_Task.end:" + currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_Task.end:" + currentRequest.imageKnifeOption.loadSrc)
|
||||||
// 监听网络回调事件
|
if (isWatchProgress){
|
||||||
if (currentRequest.imageKnifeOption.progressListener !== undefined && requestSource === ImageKnifeRequestSource.SRC) {
|
emitter.on(Constants.PROGRESS_EMITTER + memoryKey, (data) => {
|
||||||
let progressCallBack = currentRequest.imageKnifeOption.progressListener
|
this.progressCallBack(requestList! , data?.data?.value as number)
|
||||||
emitter.on(Constants.PROGRESS_EMITTER, (data) => {
|
|
||||||
progressCallBack(data?.data?.value as number)
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 回调请求开始
|
|
||||||
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
|
||||||
if (requestWithSource.source === ImageKnifeRequestSource.SRC && requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadStart !== undefined) {
|
|
||||||
requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadStart()
|
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadStart:"+currentRequest.imageKnifeOption.loadSrc)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_execute.start:" + currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_execute.start:" + currentRequest.imageKnifeOption.loadSrc)
|
||||||
taskpool.execute(task).then((res: Object) => {
|
taskpool.execute(task).then((res: Object) => {
|
||||||
|
this.doTaskCallback(res as RequestJobResult | undefined, requestList!, currentRequest, memoryKey, imageSrc, requestSource);
|
||||||
|
if (isWatchProgress){
|
||||||
|
emitter.off(Constants.PROGRESS_EMITTER + memoryKey)
|
||||||
|
}
|
||||||
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_execute.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
|
}).catch((err:BusinessError)=>{
|
||||||
|
LogUtil.error("Fail to execute in sub thread src=" + imageSrc + " err=" + err)
|
||||||
|
if (isWatchProgress){
|
||||||
|
emitter.off(Constants.PROGRESS_EMITTER + memoryKey)
|
||||||
|
}
|
||||||
|
this.executingJobMap.remove(memoryKey);
|
||||||
|
this.dispatchNextJob();
|
||||||
|
})
|
||||||
|
} else { //主线程请求
|
||||||
|
requestJob(request, requestList).then((res: RequestJobResult | undefined) => {
|
||||||
|
this.doTaskCallback(res, requestList!, currentRequest, memoryKey, imageSrc, requestSource);
|
||||||
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_execute.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
|
}).catch((err:BusinessError)=>{
|
||||||
|
LogUtil.error("Fail to execute in main thread src=" + imageSrc + " err=" + err)
|
||||||
|
this.executingJobMap.remove(memoryKey);
|
||||||
|
this.dispatchNextJob();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调下载进度
|
||||||
|
* @param requestList 请求列表
|
||||||
|
* @param data 进度
|
||||||
|
*/
|
||||||
|
private progressCallBack(requestList:List<ImageKnifeRequestWithSource>, data: number) {
|
||||||
|
for (let i = 0; i < requestList.length; i++) {
|
||||||
|
let requestWithSource:ImageKnifeRequestWithSource = requestList[i]
|
||||||
|
if (requestWithSource.request.imageKnifeOption.progressListener !== undefined && requestWithSource.source === ImageKnifeRequestSource.SRC) {
|
||||||
|
requestWithSource.request.imageKnifeOption.progressListener(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private doTaskCallback(requestJobResult: RequestJobResult | undefined, requestList: List<ImageKnifeRequestWithSource> ,
|
||||||
|
currentRequest: ImageKnifeRequest, memoryKey: string, imageSrc: string | PixelMap | Resource, requestSource: ImageKnifeRequestSource):void {
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_CallBack.start:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_CallBack.start:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
let requestJobResult = res as RequestJobResult
|
if (requestJobResult === undefined){
|
||||||
let pixelmap = requestJobResult === undefined ? undefined : requestJobResult.pixelMap
|
return
|
||||||
|
}
|
||||||
|
let pixelmap = requestJobResult.pixelMap;
|
||||||
if (pixelmap === undefined) {
|
if (pixelmap === undefined) {
|
||||||
if (requestList !== undefined) {
|
|
||||||
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
||||||
// 回调请求失败
|
// 回调请求失败
|
||||||
if (requestWithSource.source === ImageKnifeRequestSource.SRC && requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadFailed !== undefined && requestJobResult.loadFail){
|
if (requestWithSource.source === ImageKnifeRequestSource.SRC &&
|
||||||
|
requestWithSource.request.imageKnifeOption.onLoadListener?.onLoadFailed !== undefined &&
|
||||||
|
requestJobResult.loadFail) {
|
||||||
requestWithSource.request.imageKnifeOption.onLoadListener.onLoadFailed(requestJobResult.loadFail);
|
requestWithSource.request.imageKnifeOption.onLoadListener.onLoadFailed(requestJobResult.loadFail);
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadFailed:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadFailed:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
}
|
}
|
||||||
if (requestWithSource.source === ImageKnifeRequestSource.SRC && requestWithSource.request.imageKnifeOption.errorholderSrc !== undefined) {
|
if (requestWithSource.source === ImageKnifeRequestSource.SRC &&
|
||||||
|
requestWithSource.request.imageKnifeOption.errorholderSrc !== undefined) {
|
||||||
|
|
||||||
if (this.showFromMemomry(currentRequest, requestWithSource.request.imageKnifeOption.errorholderSrc, ImageKnifeRequestSource.ERROR_HOLDER) === false) {
|
if (this.showFromMemomry(currentRequest, requestWithSource.request.imageKnifeOption.errorholderSrc,
|
||||||
this.getAndShowImage(currentRequest, requestWithSource.request.imageKnifeOption.errorholderSrc, ImageKnifeRequestSource.ERROR_HOLDER)
|
ImageKnifeRequestSource.ERROR_HOLDER) === false) {
|
||||||
|
this.getAndShowImage(currentRequest, requestWithSource.request.imageKnifeOption.errorholderSrc,
|
||||||
|
ImageKnifeRequestSource.ERROR_HOLDER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.executingJobMap.remove(memoryKey)
|
this.executingJobMap.remove(memoryKey);
|
||||||
}
|
|
||||||
else {
|
|
||||||
LogUtil.log("error: no requestlist need to draw for key = " + memoryKey)
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 保存文件缓存
|
// 保存文件缓存
|
||||||
if (requestJobResult.bufferSize > 0 && currentRequest.imageKnifeOption.writeCacheStrategy !== CacheStrategy.Memory) {
|
if (requestJobResult.bufferSize > 0 && currentRequest.imageKnifeOption.writeCacheStrategy !== CacheStrategy.Memory) {
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveWithoutWriteFile.start:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveWithoutWriteFile.start:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
ImageKnife.getInstance().saveWithoutWriteFile(requestJobResult.fileKey, requestJobResult.bufferSize)
|
ImageKnife.getInstance().saveWithoutWriteFile(requestJobResult.fileKey, requestJobResult.bufferSize);
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveWithoutWriteFile.end:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveWithoutWriteFile.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
}
|
}
|
||||||
|
|
||||||
let ImageKnifeData: ImageKnifeData = {
|
let ImageKnifeData: ImageKnifeData = {
|
||||||
source: pixelmap!,
|
source: pixelmap!,
|
||||||
imageWidth: requestJobResult.size == undefined ? 0 : requestJobResult.size.width,
|
imageWidth: 0,
|
||||||
imageHeight: requestJobResult.size == undefined ? 0 : requestJobResult.size.height
|
imageHeight: 0
|
||||||
}
|
};
|
||||||
|
|
||||||
// 保存内存缓存
|
// 保存内存缓存
|
||||||
if (currentRequest.imageKnifeOption.writeCacheStrategy !== CacheStrategy.File) {
|
if (currentRequest.imageKnifeOption.writeCacheStrategy !== CacheStrategy.File) {
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveMemoryCache.start:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveMemoryCache.start:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
ImageKnife.getInstance()
|
ImageKnife.getInstance()
|
||||||
.saveMemoryCache(this.engineKey.generateMemoryKey(imageSrc, requestSource, currentRequest.imageKnifeOption),
|
.saveMemoryCache(this.engineKey.generateMemoryKey(imageSrc, requestSource, currentRequest.imageKnifeOption),
|
||||||
ImageKnifeData)
|
ImageKnifeData);
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveMemoryCache.end:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_saveMemoryCache.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
}
|
}
|
||||||
if (requestList !== undefined) {
|
if (requestList !== undefined) {
|
||||||
|
@ -231,42 +285,42 @@ export class ImageKnifeDispatcher {
|
||||||
// key相同的request,一起绘制
|
// key相同的request,一起绘制
|
||||||
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
requestList.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
||||||
if (requestWithSource.request.requestState === ImageKnifeRequestState.DESTROY) {
|
if (requestWithSource.request.requestState === ImageKnifeRequestState.DESTROY) {
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
// 画主图
|
// 画主图
|
||||||
if (requestWithSource.source === ImageKnifeRequestSource.SRC || requestWithSource.source === ImageKnifeRequestSource.ERROR_HOLDER
|
if (requestWithSource.source === ImageKnifeRequestSource.SRC ||
|
||||||
|| (requestWithSource.source === ImageKnifeRequestSource.PLACE_HOLDER && requestWithSource.request.requestState === ImageKnifeRequestState.PROGRESS)) {
|
requestWithSource.source === ImageKnifeRequestSource.ERROR_HOLDER
|
||||||
|
|| (requestWithSource.source === ImageKnifeRequestSource.PLACE_HOLDER &&
|
||||||
|
requestWithSource.request.requestState === ImageKnifeRequestState.PROGRESS)) {
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.start:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.start:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
requestWithSource.request.ImageKnifeRequestCallback.showPixelMap(requestWithSource.request.componentVersion, ImageKnifeData.source, requestWithSource.source)
|
requestWithSource.request.ImageKnifeRequestCallback.showPixelMap(requestWithSource.request.componentVersion,
|
||||||
|
ImageKnifeData.source, requestWithSource.source);
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.end:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (requestWithSource.source == ImageKnifeRequestSource.SRC) {
|
if (requestWithSource.source == ImageKnifeRequestSource.SRC) {
|
||||||
requestWithSource.request.requestState = ImageKnifeRequestState.COMPLETE
|
requestWithSource.request.requestState = ImageKnifeRequestState.COMPLETE;
|
||||||
if (requestWithSource.request.imageKnifeOption.onLoadListener && requestWithSource.request.imageKnifeOption.onLoadListener.onLoadSuccess) {
|
if (requestWithSource.request.imageKnifeOption.onLoadListener &&
|
||||||
|
requestWithSource.request.imageKnifeOption.onLoadListener.onLoadSuccess) {
|
||||||
// 回调请求成功
|
// 回调请求成功
|
||||||
requestWithSource.request.imageKnifeOption.onLoadListener.onLoadSuccess(ImageKnifeData.source,ImageKnifeData.imageWidth,ImageKnifeData.imageHeight);
|
requestWithSource.request.imageKnifeOption.onLoadListener.onLoadSuccess(ImageKnifeData.source);
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadSuccess:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_onLoadSuccess:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
}
|
}
|
||||||
} else if (requestWithSource.source == ImageKnifeRequestSource.ERROR_HOLDER) {
|
} else if (requestWithSource.source == ImageKnifeRequestSource.ERROR_HOLDER) {
|
||||||
requestWithSource.request.requestState = ImageKnifeRequestState.ERROR
|
requestWithSource.request.requestState = ImageKnifeRequestState.ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.executingJobMap.remove(memoryKey)
|
this.executingJobMap.remove(memoryKey);
|
||||||
this.dispatchNextJob()
|
this.dispatchNextJob();
|
||||||
|
} else {
|
||||||
|
LogUtil.log("error: no requestlist need to draw for key = " + memoryKey);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
LogUtil.log("error: no requestlist need to draw for key = " + memoryKey)
|
|
||||||
}
|
|
||||||
// })
|
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_CallBack.end:"+currentRequest.imageKnifeOption.loadSrc)
|
LogUtil.log("ImageKnife_DataTime_getAndShowImage_CallBack.end:"+currentRequest.imageKnifeOption.loadSrc)
|
||||||
});
|
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage_execute.end:"+currentRequest.imageKnifeOption.loadSrc)
|
|
||||||
LogUtil.log("ImageKnife_DataTime_getAndShowImage.end:"+currentRequest.imageKnifeOption.loadSrc)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dispatchNextJob() {
|
dispatchNextJob() {
|
||||||
LogUtil.log("ImageKnife_DataTime_dispatchNextJob.start")
|
LogUtil.log("ImageKnife_DataTime_dispatchNextJob.start")
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -304,7 +358,7 @@ export class ImageKnifeDispatcher {
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
@Concurrent
|
@Concurrent
|
||||||
async function requestJob(request: RequestJobRequest): Promise<RequestJobResult | undefined> {
|
async function requestJob(request: RequestJobRequest, requestList?: List<ImageKnifeRequestWithSource>): Promise<RequestJobResult | undefined> {
|
||||||
LogUtil.log("ImageKnife_DataTime_requestJob.start:" + request.src)
|
LogUtil.log("ImageKnife_DataTime_requestJob.start:" + request.src)
|
||||||
let resBuf: ArrayBuffer | undefined
|
let resBuf: ArrayBuffer | undefined
|
||||||
let bufferSize: number = 0
|
let bufferSize: number = 0
|
||||||
|
@ -365,16 +419,28 @@ async function requestJob(request: RequestJobRequest): Promise<RequestJobResult
|
||||||
arrayBuffers.push(data)
|
arrayBuffers.push(data)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (request.isWatchProgress) {
|
||||||
httpRequest.on('dataReceiveProgress', (data: RequestData) => {
|
httpRequest.on('dataReceiveProgress', (data: RequestData) => {
|
||||||
// 下载进度
|
// 下载进度
|
||||||
if (data != undefined && (typeof data.receiveSize == 'number') && (typeof data.totalSize == 'number')) {
|
if (data != undefined && (typeof data.receiveSize == 'number') && (typeof data.totalSize == 'number')) {
|
||||||
let percent = Math.round(((data.receiveSize * 1.0) / (data.totalSize * 1.0)) * 100)
|
let percent = Math.round(((data.receiveSize * 1.0) / (data.totalSize * 1.0)) * 100)
|
||||||
if (progress !== percent) {
|
if (progress !== percent) {
|
||||||
progress = percent
|
progress = percent
|
||||||
emitter.emit(Constants.PROGRESS_EMITTER, { data: { "value": progress } })
|
if (requestList === undefined) {
|
||||||
|
// 子线程
|
||||||
|
emitter.emit(Constants.PROGRESS_EMITTER + request.memoryKey, { data: { "value": progress } })
|
||||||
|
}else {
|
||||||
|
// 主线程请求
|
||||||
|
requestList!.forEach((requestWithSource: ImageKnifeRequestWithSource) => {
|
||||||
|
if (requestWithSource.request.imageKnifeOption.progressListener !== undefined && requestWithSource.source === ImageKnifeRequestSource.SRC) {
|
||||||
|
requestWithSource.request.imageKnifeOption.progressListener(progress)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
await promise.then((data: number) => {
|
await promise.then((data: number) => {
|
||||||
if (data == 200) {
|
if (data == 200) {
|
||||||
|
|
|
@ -80,5 +80,7 @@ export interface RequestJobRequest {
|
||||||
writeCacheStrategy?: CacheStrategy
|
writeCacheStrategy?: CacheStrategy
|
||||||
signature?: string
|
signature?: string
|
||||||
engineKey: IEngineKey
|
engineKey: IEngineKey
|
||||||
|
isWatchProgress: boolean
|
||||||
|
memoryKey: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue