add Toolkit.setRandomInterval
This commit is contained in:
@@ -142,7 +142,7 @@ export default class Toolkit {
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成随机数
|
||||
* 生成随机数(整数)
|
||||
*
|
||||
* @param min 最小值
|
||||
* @param max 最大值
|
||||
@@ -151,6 +151,16 @@ export default class Toolkit {
|
||||
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 数据转文件
|
||||
*
|
||||
@@ -334,4 +344,53 @@ export default class Toolkit {
|
||||
}
|
||||
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