From b9378cec7ec1babbd975962185960911a5f01af2 Mon Sep 17 00:00:00 2001 From: zhl Date: Tue, 22 Dec 2020 15:02:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E6=9C=89=E6=97=B6=E6=8A=A5delayRun?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=89=BE=E5=88=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/decorators/cfg.ts | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/decorators/cfg.ts b/src/decorators/cfg.ts index 63c1b62..5cf5e02 100644 --- a/src/decorators/cfg.ts +++ b/src/decorators/cfg.ts @@ -2,7 +2,11 @@ import {singleton} from "../common/Singleton"; import {GameEnv} from "../cfg/GameEnv"; const baseCfg = new GameEnv(); - +const delayRun = function (max: number, min?: number) { + min = min || 0; + let milliseconds = (Math.random() * (max - min) + min) * 1000 | 0; + return new Promise(resolve => setTimeout(resolve, milliseconds)); +} /** * 根据配置项延迟执行的修饰器 * @param type GameEnv中的字段名 @@ -12,11 +16,7 @@ export function wait(type: string) { propertyKey: string, descriptor: PropertyDescriptor) => { const method = descriptor.value; - let delayRun = function (max: number, min?: number) { - min = min || 0; - let milliseconds = (Math.random() * (max - min) + min) * 1000 | 0; - return new Promise(resolve => setTimeout(resolve, milliseconds)); - } + descriptor.value = function (...args: any[]) { // @ts-ignore let time = baseCfg[type] as number; @@ -26,8 +26,9 @@ export function wait(type: string) { let minTime = minDelay / 100 * time; delayRun(maxTime, minTime) .then(() => { + return method!.apply(this, args); }) - .finally(() => { + .catch(err => { return method!.apply(this, args); }) @@ -44,11 +45,6 @@ export function delay(num: number) { propertyKey: string, descriptor: PropertyDescriptor) => { const method = descriptor.value; - let delayRun = function (max: number, min?: number) { - min = min || 0; - let milliseconds = (Math.random() * (max - min) + min) * 1000 | 0; - return new Promise(resolve => setTimeout(resolve, milliseconds)); - } descriptor.value = function (...args: any[]) { delayRun(num, 0) .then(() => {