add Toolkit.setRandomInterval
This commit is contained in:
@@ -142,7 +142,7 @@ export default class Toolkit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成随机数
|
* 生成随机数(整数)
|
||||||
*
|
*
|
||||||
* @param min 最小值
|
* @param min 最小值
|
||||||
* @param max 最大值
|
* @param max 最大值
|
||||||
@@ -151,6 +151,16 @@ export default class Toolkit {
|
|||||||
return Math.floor(Math.random() * (max + 1 - min)) + min;
|
return Math.floor(Math.random() * (max + 1 - min)) + min;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成随机数(浮点数)
|
||||||
|
*
|
||||||
|
* @param min 最小值
|
||||||
|
* @param max 最大值
|
||||||
|
*/
|
||||||
|
public static randomDouble(min = 0, max = 1): number {
|
||||||
|
return Math.random() * (max - min) + min;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base64 数据转文件
|
* Base64 数据转文件
|
||||||
*
|
*
|
||||||
@@ -334,4 +344,53 @@ export default class Toolkit {
|
|||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置随机间隔执行
|
||||||
|
*
|
||||||
|
* @param config 配置对象
|
||||||
|
* @param config.handler 处理函数,如果提供了 min 和 max,则会接收随机数作为参数
|
||||||
|
* @param config.handleRate 执行概率,0-1 之间,默认 1(总是执行)
|
||||||
|
* @param config.interval 间隔时间(毫秒)
|
||||||
|
* @param config.min 随机数最小值(可选),提供时会生成随机数传给 handler
|
||||||
|
* @param config.max 随机数最大值(可选),提供时会生成随机数传给 handler
|
||||||
|
* @returns 定时器 ID
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```js
|
||||||
|
* // 简单的随机执行
|
||||||
|
* setRandomInterval({
|
||||||
|
* handler: () => console.log('executed'),
|
||||||
|
* handleRate: 0.5,
|
||||||
|
* interval: 1000
|
||||||
|
* })
|
||||||
|
*
|
||||||
|
* // 带随机数参数的执行
|
||||||
|
* setRandomInterval({
|
||||||
|
* handler: (value) => console.log('random value:', value),
|
||||||
|
* handleRate: 1,
|
||||||
|
* min: 0,
|
||||||
|
* max: 100,
|
||||||
|
* interval: 1000
|
||||||
|
* })
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
public static setRandomInterval(config: {
|
||||||
|
handler: Function | ((value: number) => void);
|
||||||
|
handleRate?: number;
|
||||||
|
interval?: number;
|
||||||
|
min?: number;
|
||||||
|
max?: number;
|
||||||
|
}): NodeJS.Timeout {
|
||||||
|
const { handler, handleRate = 1, interval, min, max } = config;
|
||||||
|
return setInterval(() => {
|
||||||
|
if (Math.random() < handleRate) {
|
||||||
|
if (min !== undefined && max !== undefined) {
|
||||||
|
(handler as (value: number) => void)(this.randomDouble(min, max));
|
||||||
|
} else {
|
||||||
|
(handler as Function)();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, interval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user