异步生成器与流式数据处理
使用异步生成器处理流数据、分页 API 和实时事件流,实现高效的内存控制。 · 难度:入门 · +10XP
异步生成器与流式数据处理
异步生成器(async function*)结合了生成器和异步迭代,非常适合处理分页 API 或大文件流。本教程将展示如何创建一个异步生成器,按需从远程 API 获取下一页数据,并利用 for await...of 消费。你还会学到如何用生成器实现背压(backpressure)机制,以及将事件发射器转换为异步可迭代对象。这些技巧在处理大数据集或实时数据源时极其有用。
async function* fetchPages(url, maxPages = 5) {
for (let page = 1; page <= maxPages; page++) {
const response = await fetch(${url}?page=${page});
const data = await response.json();
yield data;
}
}
(async () => {
for await (const page of fetchPages('https://api.example.com/items')) {
console.log('接收到数据:', page);
}
})();