Node.js node-schedule 实现随机定时任务的一种方案

我用node-schedule这个 NPM 包演示实现过程,当然你原来用什么包就用什么包,我只是提供一种实现随机执行定时任务的方法思路。

const schedule = require('node-schedule')


/**
 * 提供一个小数然后通过计算得出随机布尔值
 * 最多支持两位小数
 */
function probability (num) {
	if(typeof num != 'number') {
		return false
	} else if(num >= 1) {
		return true
	} else {
		num = parseInt(num * 100)

		let all = Array.apply(null, {length: 100}).map((x, i) => i.toString(36))
		let ables = []

		while(ables.length < num) {
			let it = all[parseInt(Math.random(0, 1) * 100)]
			!ables.includes(it) && ables.push(it)
		}

		return ables.includes(all[parseInt(Math.random(0, 1) * 100)])
	}
}


// 首先启动一个定时任务,每分钟执行一次
schedule.scheduleJob('* * * * *', async () => {
	// 50% 的概率可能执行
	if(probability(0.5)) {
		// 严谨一点,可以设置一个计时器延迟 0-10 秒执行
		setTimeout(() => {
			// 业务代码
		}, Math.random(0, 1) * 10000)
	}
})
0 条评论
请不要发布违法违规有害信息,如发现请及时举报或反馈
还没有人评论呢,速度抢占沙发!