2023-05-10

// 循环执行一组数据并调用回调函数对数据进行处理
async function loopData(data, callback, interval = 1000) {
  for (let i = 0; i < data.length; i++) {
    callback(data[i]);
    await delay(interval);
  }
}

// 延时函数
function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

// 控制执行流程
async function runData(dataList, interval, isQueue, callback) {
  if (isQueue) {
    for (let i = 0; i < dataList.length; i++) {
      await loopData(dataList[i], interval, callback);
    }
  } else {
    const promises = dataList.map((data) => loopData(data, interval, callback));
    await Promise.all(promises);
  }
}

// 示例:按队列执行两组数据,每隔1秒执行一次,并调用外部回调函数对数据进行处理
const dataQueue = [
  [1, 2, 3],
  ["a", "b", "c"],
];
runData(
  dataQueue,
  1000,
  true,
  function myCallback(data) {
    console.log(`Processing data ${data}`);
  }
);

// 示例:同时执行两组数据,每隔2秒执行一次,并调用外部回调函数对数据进行处理
const dataParallel = [
  [1, 2, 3],
  ["a", "b", "c"],
];
runData(
  dataParallel,
  2000,
  false,
  function myCallback(data) {
    console.log(`Processing data ${data}`);
  }
);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有的时候我感觉自己要求太完美了。 今天早上去酒店楼下散步,逛逛公园,感觉自己慢慢放松下来。 到前台要了一瓶矿泉水,...
    飞翔快乐阅读 775评论 0 0
  • 2023年5月10日中原焦点团队刘永利分享1309天。中原焦点团队第7期读书打卡第59天。读《十几岁孩子的正面管教...
    成长_3a8a阅读 708评论 0 0
  • 每天都是一次新开始的机会,不要沉溺于昨天的失败,要怀着积极的心态和期望,开始今天的生活。 人不要错过让自己经济独立...
    青冰l阅读 789评论 0 0
  • 衣服会褪色 墙壁会斑驳 书本会发黄 人会变得冷而且陌生
    要开心呀88阅读 681评论 0 3
  • 最近发现自己可以做到静下心来倾听别人了,以前更多的是倾诉,虽然知道沟通中重在倾听,但是做不到,或许现在我能看见自己...
    平安喜乐111阅读 503评论 0 0