// 循环执行一组数据并调用回调函数对数据进行处理
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}`);
}
);
网友评论