async function processData(data, delay, chunkSize, process) {
let i = -1;
let j = -1;
for (const n of data) {
if (++j === chunkSize) {
j = 0;
await new Promise(r => setTimeout(r, delay));
}
process(n, ++i);
}
}
processData(Array(10).keys(), 1500, 3, console.log).then(() => console.log('DONE'));
processData('ABCDEFGHIJKL', 1200, 5, console.log).then(() => console.log('DONE'));
processData(document.images, 900, 7, n => console.log(n.src)).then(() => console.log('DONE'));