async function* paginate(items, pageSize) {
for (let i = 0; i < items.length; i += pageSize) {
const page = items.slice(i, i + pageSize);
yield await Promise.resolve(page);
}
}
async function* transform(source, fn) {
for await (const chunk of source) {
yield fn(chunk);
}
}
async function run() {
const data = [10, 20, 30, 40, 50, 60];
const pages = paginate(data, 2);
const mapped = transform(pages, (page) => page.map((x) => x * 2));
const results = [];
for await (const page of mapped) {
results.push(page.reduce((a, b) => a + b, 0));
}
console.log(results);
}
run(); Post #3171
2.62K
CHALLENGE
- ❤ 3
- 👍 3
- 🔥 1
- 🤔 1