首页 > web前端 > js教程 > 正文

异步迭代_Async Generator应用

幻影之瞳
发布: 2025-11-30 18:52:50
原创
571人浏览过
<p>异步生成器是通过 async function* 定义的函数,返回可迭代的异步对象,支持在 yield 时返回 Promise,并用 for await...of 消费,适用于分页请求、流数据处理等场景,结合 await 和迭代逻辑,使异步流程更清晰易维护。</p>

异步迭代_async generator应用

异步生成器(Async Generator)是 JavaScript 中处理异步数据流的有力工具,它结合了 async/awaitGenerator 的特性,适用于逐步获取异步数据的场景。比如从分页接口拉取数据、读取大型文件流或监听事件流时,使用异步生成器能让代码更清晰、可读性更强。

什么是异步生成器?

异步生成器函数通过 async function* 定义,调用后返回一个既支持异步操作又可迭代的对象。它可以在每次 yield 时返回一个 Promise,并在消费时自动等待结果。

与普通 Generator 不同,异步生成器产出的是 Promise,消费者通常使用 for await...of 来遍历。

基本语法和使用方式

定义一个异步生成器:

async function* fetchPaginatedData() {
  let page = 1;
  while (true) {
    const response = await fetch(`/api/data?page=${page}`);
    const data = await response.json();
<pre class='brush:php;toolbar:false;'>if (data.items.length === 0) break;

yield data.items; // 每次返回一页数据
page++;
登录后复制

} }

使用 for await...of 遍历:

(async () => {
  for await (const items of fetchPaginatedData()) {
    console.log('Received items:', items);
  }
})();
登录后复制

上面的例子中,每一页数据都会被异步加载并逐步处理,不会阻塞主线程,同时写法接近同步逻辑,易于理解和维护。

Netty 代码分析 中文WORD版
Netty 代码分析 中文WORD版

本文档主要讲述的是Netty 代码分析;Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序;有需要的朋友可以下载看看

Netty 代码分析 中文WORD版 3
查看详情 Netty 代码分析 中文WORD版

实际应用场景

异步生成器特别适合以下几种情况:

  • 分页 API 调用:如上例所示,可以封装翻页逻辑,外部只需迭代即可获取所有数据。
  • 流式数据处理:读取网络流、文件流或 WebSocket 消息时,逐段处理内容。
  • 事件队列消费:将事件监听器包装成异步生成器,按顺序处理异步事件。
  • 长时间轮询或心跳任务:定时请求服务端状态,每次 yield 返回最新结果。

错误处理与中断控制

异步生成器也支持 try...catchreturn/break 控制流程。

async function* watchMessages() {
  while (true) {
    try {
      const res = await fetch('/messages/next');
      if (!res.ok) throw new Error('Failed to fetch');
<pre class='brush:php;toolbar:false;'>  const msg = await res.json();
  if (msg.type === 'end') return; // 主动结束

  yield msg;
} catch (err) {
  yield { error: true, message: err.message };
  break;
}
登录后复制

} }

在消费端也可以通过 break 提前退出循环:

for await (const msg of watchMessages()) {
  if (msg.error) break;
  console.log(msg);
}
登录后复制

基本上就这些。异步生成器让复杂异步流程变得更像同步迭代,结构清晰,逻辑集中,是现代 JS 异步编程的重要补充。合理使用能显著提升代码的可维护性和表达力。

以上就是异步迭代_Async Generator应用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号