如果“垃圾”后端一次性给你放回上万条数据咋办!!!

46 阅读1分钟

什么是分时函数?

将一个庞大的任务按照一定的时间段拆分成一个一个的小任务,以免任务太过庞一次执行所所造成的页面卡顿或假死。😀

业务场景

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>) => {
// 里面是代码逻辑
}