import {
IUIEngineInputParam,
IUIEngineModel,
IUIEngineResult,
} from '@/core/interface';
import { UIEngine } from './ui-engine';
/**
* 计数器界面引擎
*
* @export
* @class TimerUIEngine
* @extends {UIEngine}
* @template A
*/
export class TimerUIEngine extends UIEngine {
/**
* 计数器标识
*
* @private
* @type {*}
* @memberof TimerUIEngine
*/
private timerId: any;
/**
* 间隔时间
*
* @type {number}
* @memberof TimerUIEngine
*/
public timer: number = 6000;
/**
* Creates an instance of TimerUIEngine.
* @param {IUIEngineModel} model
* @memberof TimerUIEngine
*/
public constructor(model: IUIEngineModel) {
super(model);
this.timer = model.timer ? model.timer : 6000;
}
/**
* 异步执行
*
* @param {IUIEngineInputParam} args
* @return {*} {Promise}
* @memberof TimerUIEngine
*/
public async asyncExcute(
args: IUIEngineInputParam
): Promise {
if (this.timerId) {
return { ok: true, data: [] };
}
try {
super.asyncExcute(args);
this.timerId = setInterval(() => {
super.asyncExcute(args);
}, this.timer);
} catch (error) {
return { ok: false, data: [] };
}
return { ok: true, data: [] };
}
/**
* 同步执行
*
* @param {IUIEngineInputParam} args
* @memberof TimerUIEngine
*/
public syncExcute(args: IUIEngineInputParam) {
if (this.timerId) {
return { ok: true, data: [] };
}
try {
super.syncExcute(args);
this.timerId = setInterval(() => {
super.syncExcute(args);
}, this.timer);
} catch (error) {
return { ok: false, data: [] };
}
return { ok: true, data: [] };
}
/**
* 销毁
*
* @memberof TimerUIEngine
*/
public destroy() {
if (this.timerId) {
clearInterval(this.timerId);
}
}
}