feat:judgeTask修改
This commit is contained in:
		
							parent
							
								
									dca341c2d3
								
							
						
					
					
						commit
						53bfef994e
					
				
							
								
								
									
										58
									
								
								entry/src/main/ets/pages/judgeSDK/utils/judgeTask.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								entry/src/main/ets/pages/judgeSDK/utils/judgeTask.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| import Prompt from '@system.prompt' | ||||
| 
 | ||||
| const TAG = 'SURENJUN_JUDGE' | ||||
| 
 | ||||
| interface DelayConfig{ | ||||
|   isDelay: boolean | ||||
|   delayTime: number | ||||
| } | ||||
| 
 | ||||
| interface QUEUE { | ||||
|   fn: Function, | ||||
|   delayConfig?: DelayConfig | ||||
| } | ||||
| 
 | ||||
| type GoTask = (currentTask:QUEUE)=>Promise<boolean> | ||||
| 
 | ||||
| export default class JudgeTask { | ||||
|   private queue?:QUEUE[] = [] | ||||
|   private status: string | ||||
| 
 | ||||
|   constructor() { | ||||
|     this.queue = [] | ||||
|     this.status = 'end' | ||||
|   } | ||||
| 
 | ||||
|   //执行任务 | ||||
|   goTask:GoTask = async (currentTask:QUEUE) => { | ||||
|     const fn = currentTask.fn; | ||||
|     const delayConfig = currentTask.delayConfig || {isDelay:false,delayTime:1000} | ||||
|     const isDelay = delayConfig.isDelay | ||||
|     const delayTime = delayConfig.delayTime | ||||
| 
 | ||||
|     return false | ||||
|   } | ||||
| 
 | ||||
|   executeQueue = async () => { | ||||
|     const queue = this.queue; | ||||
|     const executeQueue = this.executeQueue | ||||
|     if (queue.length) { | ||||
|       for (const currentTask of queue) { | ||||
|         await this.goTask(currentTask) | ||||
|         this.queue.shift() | ||||
|         await executeQueue() | ||||
|       } | ||||
|     } else { | ||||
|       this.status = 'end' | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   addTask = async (fn:Function, delayConfig?: DelayConfig) => { | ||||
|     this.queue.push({ | ||||
|       fn, delayConfig | ||||
|     }); | ||||
|     if (this.status == 'end' && this.queue.length === 1) { | ||||
|       await this.executeQueue(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -1,67 +0,0 @@ | ||||
| import Prompt from '@system.prompt' | ||||
| 
 | ||||
| const TAG = 'SURENJUN_JUDGE' | ||||
| 
 | ||||
| interface QUEUE { | ||||
|   fn: Function, | ||||
|   config?: { | ||||
|     isDelay: boolean | ||||
|     delayTime: number | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default class JudgeTask { | ||||
|   private queue = [] | ||||
|   private status: string | ||||
| 
 | ||||
|   constructor() { | ||||
|     this.queue = [] | ||||
|     this.status = 'end' | ||||
|   } | ||||
| 
 | ||||
|   //
 | ||||
|   goTask = async (currentTask) => { | ||||
|     const {fn,delayConfig={}} = currentTask; | ||||
|     const { isDelay = false,delayTime = 1000} = delayConfig | ||||
|     return new Promise(async (res, rej) => { | ||||
|       setTimeout(async () => { | ||||
|         try { | ||||
|           await fn() | ||||
|           res(true) | ||||
|         } catch (e) { | ||||
|           console.info(TAG, '过程任务执行失败=>' + JSON.stringify(e)) | ||||
|           Prompt.showToast({ | ||||
|             message: '过程任务执行失败=>' + JSON.stringify(e), | ||||
|             duration: 3000 | ||||
|           }); | ||||
|           res(false) | ||||
|         } | ||||
|       }, isDelay ? delayTime : 0); | ||||
|     }) | ||||
|   } | ||||
| 
 | ||||
|   executeQueue = async () => { | ||||
|     const {queue,executeQueue} = this | ||||
|     if (queue.length) { | ||||
|       for (const currentTask of queue) { | ||||
|         await this.goTask(currentTask) | ||||
|         this.queue.shift() | ||||
|         await executeQueue() | ||||
|       } | ||||
|     } else { | ||||
|       this.status = 'end' | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   addTask = async (fn, delayConfig?: { | ||||
|     isDelay: Boolean, | ||||
|     delayTime?: Number | ||||
|   }) => { | ||||
|     this.queue.push({ | ||||
|       fn, delayConfig | ||||
|     }); | ||||
|     if (this.status == 'end' && this.queue.length === 1) { | ||||
|       await this.executeQueue(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user