2023-05-10

2023-05-09  本文已影响0人  _____西班木有蛀牙
// 循环执行一组数据并调用回调函数对数据进行处理
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}`);
  }
);

上一篇下一篇

猜你喜欢

热点阅读