什么是分时函数?
将一个庞大的任务按照一定的时间段拆分成一个一个的小任务,以免任务太过庞一次执行所所造成的页面卡顿或假死。😀
业务场景
1.高峰期处理:
•比如弹幕功能,一次性N多的弹幕袭来。大概率造成页面卡顿浏览器性能过载。。
•在电商平台的促销日、金融系统的结算日等高峰时段,访问量激增,需要大量计算资源来处理用户请求。
•分时函数能够根据预设的规则或实时流量动态扩展资源,确保系统平稳处理高峰期的负载。
2.周期性任务:
•比如数据统计、报告生成等周期性任务,这些任务在特定时间点需要大量计算资源,而过了这个时间点,资源需求就会减少。
•分时函数可以根据这些周期性任务的需求自动调整资源,提高资源利用率。
上代码🤡🤡🤡简单的例子
export const timeChunk = (
list: Record<string, any>, // 数据源
fn: Function, // 函数的回调
count = 1, // 个数
time = 1000, // 时间间隔
) => {
let insertList = [] // 需要临时插入的数据
let timer = null as any // 计时器
const start = () => {
// 对执行函数逐个进行调用
for (let i = 0; i < Math.min(count, list.length); i++) {
insertList = list.shift()
fn(insertList)
}
}
return function () {
timer = setInterval(() => {
if (list.length === 0) return window.clearInterval(timer)
start()
}, time)
}
}
const init = async () => {
try {
const { data } = await callApi.get('xxxx') //
接口请求获取的数据
const start = timeChunk(data, sectionTime, 5)
start()
} catch (error) {
console.log(error)
}
}
const sectionTime = (data: Record<string, any>) => {
// 里面是代码逻辑
}