@zwa73/utils 1.0.89 → 1.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/UtilFunctions.d.ts +1 -1
- package/dist/UtilFunctions.js +41 -27
- package/package.json +1 -1
- package/src/UtilFunctions.ts +39 -25
package/dist/UtilFunctions.d.ts
CHANGED
|
@@ -103,7 +103,7 @@ export declare class UtilFunc {
|
|
|
103
103
|
* @param task - 任务逻辑
|
|
104
104
|
* @returns 处理结果
|
|
105
105
|
*/
|
|
106
|
-
static queueProc<T>(flag: Keyable, task: (
|
|
106
|
+
static queueProc<T>(flag: Keyable, task: () => Promise<T>): Promise<T>;
|
|
107
107
|
/**队列获取目标的代办事件数
|
|
108
108
|
* @param flag - 队列标签
|
|
109
109
|
*/
|
package/dist/UtilFunctions.js
CHANGED
|
@@ -297,34 +297,48 @@ class UtilFunc {
|
|
|
297
297
|
* @param task - 任务逻辑
|
|
298
298
|
* @returns 处理结果
|
|
299
299
|
*/
|
|
300
|
-
static
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
300
|
+
static queueProc(flag, task) {
|
|
301
|
+
// 如果当前标签的队列不存在,则创建一个新的队列
|
|
302
|
+
if (!this.pendingMap[flag])
|
|
303
|
+
this.pendingMap[flag] = [];
|
|
304
|
+
// 创建一个新的Promise,并保存resolve函数以便后续调用
|
|
305
|
+
let resolveFunc;
|
|
306
|
+
const promise = new Promise((resolve) => {
|
|
307
|
+
resolveFunc = resolve;
|
|
308
|
+
});
|
|
309
|
+
// 定义处理任务的函数
|
|
310
|
+
const processTask = async () => {
|
|
311
|
+
let result;
|
|
312
|
+
try {
|
|
313
|
+
// 执行任务并等待结果
|
|
314
|
+
result = await task();
|
|
315
|
+
// 使用保存的resolve函数来解决Promise
|
|
316
|
+
resolveFunc(result);
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
// 如果任务执行出错,记录错误日志
|
|
320
|
+
UtilLogger_1.SLogger.warn(`queueProc 错误: `, error, `flag: ${String(flag)}`);
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
// 无论任务是否成功,都从队列中移除当前任务
|
|
324
|
+
this.pendingMap[flag].shift();
|
|
325
|
+
// 如果队列中还有任务,执行下一个任务
|
|
326
|
+
if (this.pendingMap[flag].length > 0) {
|
|
327
|
+
this.pendingMap[flag][0]();
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
// 如果队列中没有任务,删除队列
|
|
331
|
+
delete this.pendingMap[flag];
|
|
332
|
+
}
|
|
333
|
+
}
|
|
309
334
|
};
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
? await task()
|
|
318
|
-
: await task;
|
|
319
|
-
return result;
|
|
320
|
-
}
|
|
321
|
-
catch (e) {
|
|
322
|
-
UtilLogger_1.SLogger.fatal(`queuePromise 出现错误`, e);
|
|
323
|
-
throw e;
|
|
324
|
-
}
|
|
325
|
-
finally {
|
|
326
|
-
tryRes();
|
|
327
|
-
}
|
|
335
|
+
// 将处理任务的函数添加到队列中
|
|
336
|
+
this.pendingMap[flag].push(processTask);
|
|
337
|
+
// 如果队列中只有当前任务,立即执行
|
|
338
|
+
if (this.pendingMap[flag].length === 1)
|
|
339
|
+
processTask();
|
|
340
|
+
// 返回Promise,以便调用者可以等待任务完成
|
|
341
|
+
return promise;
|
|
328
342
|
}
|
|
329
343
|
/**队列获取目标的代办事件数
|
|
330
344
|
* @param flag - 队列标签
|
package/package.json
CHANGED
package/src/UtilFunctions.ts
CHANGED
|
@@ -356,33 +356,47 @@ static pendingMap:Record<Keyable,AnyFunc[]> = {};
|
|
|
356
356
|
* @param task - 任务逻辑
|
|
357
357
|
* @returns 处理结果
|
|
358
358
|
*/
|
|
359
|
-
static
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
}
|
|
359
|
+
static queueProc<T>(flag: Keyable, task: () => Promise<T>): Promise<T> {
|
|
360
|
+
// 如果当前标签的队列不存在,则创建一个新的队列
|
|
361
|
+
if (!this.pendingMap[flag]) this.pendingMap[flag] = [];
|
|
362
|
+
|
|
363
|
+
// 创建一个新的Promise,并保存resolve函数以便后续调用
|
|
364
|
+
let resolveFunc: (value: T | PromiseLike<T>) => void;
|
|
365
|
+
const promise = new Promise<T>((resolve) => {
|
|
366
|
+
resolveFunc = resolve;
|
|
367
|
+
});
|
|
369
368
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
369
|
+
// 定义处理任务的函数
|
|
370
|
+
const processTask = async () => {
|
|
371
|
+
let result: T;
|
|
372
|
+
try {
|
|
373
|
+
// 执行任务并等待结果
|
|
374
|
+
result = await task();
|
|
375
|
+
// 使用保存的resolve函数来解决Promise
|
|
376
|
+
resolveFunc(result);
|
|
377
|
+
} catch (error) {
|
|
378
|
+
// 如果任务执行出错,记录错误日志
|
|
379
|
+
SLogger.warn(`queueProc 错误: `,error,`flag: ${String(flag)}`);
|
|
380
|
+
} finally {
|
|
381
|
+
// 无论任务是否成功,都从队列中移除当前任务
|
|
382
|
+
this.pendingMap[flag].shift();
|
|
383
|
+
// 如果队列中还有任务,执行下一个任务
|
|
384
|
+
if (this.pendingMap[flag].length > 0) {
|
|
385
|
+
this.pendingMap[flag][0]();
|
|
386
|
+
} else {
|
|
387
|
+
// 如果队列中没有任务,删除队列
|
|
388
|
+
delete this.pendingMap[flag];
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
};
|
|
374
392
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
throw e;
|
|
383
|
-
}finally {
|
|
384
|
-
tryRes();
|
|
385
|
-
}
|
|
393
|
+
// 将处理任务的函数添加到队列中
|
|
394
|
+
this.pendingMap[flag].push(processTask);
|
|
395
|
+
// 如果队列中只有当前任务,立即执行
|
|
396
|
+
if (this.pendingMap[flag].length === 1) processTask();
|
|
397
|
+
|
|
398
|
+
// 返回Promise,以便调用者可以等待任务完成
|
|
399
|
+
return promise;
|
|
386
400
|
}
|
|
387
401
|
/**队列获取目标的代办事件数
|
|
388
402
|
* @param flag - 队列标签
|