/** ***************************************** * Created by edonet@163.com * Created on 2020-01-16 15:06:08 ***************************************** */ 'use strict'; /** ***************************************** * 加载依赖 ***************************************** */ import { setTimer } from './delay'; /** ***************************************** * 延时执行 ***************************************** */ function delay(time: number | undefined, callback?: () => T): Promise { return new Promise((resolve, reject) => { setTimer(time, () => { if (typeof callback === 'function') { try { resolve(callback()); } catch (err) { reject(err); } } else { resolve(callback); } }); }); } /** ***************************************** * 延时对象 ***************************************** */ function defer(): Promise; function defer(time: number): Promise; function defer(time: number, callback: () => T): Promise; function defer(time: number, callback: T): Promise; function defer(callback: () => T): Promise; function defer(callback: () => T, time: number): Promise; function defer(time?: (() => T) | number, callback?: unknown): Promise { // 重载参数 if (typeof time === 'function') { return delay(callback as number, time as () => T); } // 解析函数 return delay(time as number, callback as () => T); } /** ***************************************** * 抛出接口 ***************************************** */ export { defer, delay };