首页/文章/八股文

Generator 是如何做到中断和恢复的

2025-02-13
6603 分钟
...

关键词:Generator 中断、Generator 回复

Generator 是 JavaScript 中一种特殊的函数,它能够通过迭代器协议(Iterator Protocol)实现中断和恢复的功能。

Generator 函数使用 function* 声明,内部可以使用 yield 关键字来定义中断点。当调用 Generator 函数时,它不会立即执行,而是返回一个迭代器对象。通过调用迭代器的 next() 方法,可以逐步执行 Generator 函数,并在每个 yield 关键字处暂停执行并返回一个包含当前值的对象。

当调用 next() 方法时,Generator 函数会从上次暂停的地方继续执行,直到遇到下一个 yield 关键字或函数结束。通过不断调用 next() 方法,可以逐步执行 Generator 函数的代码,并获取每个中断点处的值。

由于 Generator 函数具有中断和恢复的特性,可以用于异步编程,实现一种更直观的方式来处理异步操作。通过 yield 关键字,可以将异步操作分割成多个步骤,每个步骤都可以通过 yield 暂停,等待异步操作完成后再恢复执行。

以下是一个简单的示例,展示了 Generator 函数的中断和恢复特性:

function* generatorFunction() {
  console.log('Step 1');
  yield;
  console.log('Step 2');
  yield;
  console.log('Step 3');
}

const generator = generatorFunction();

generator.next(); // Step 1
generator.next(); // Step 2
generator.next(); // Step 3

在上述示例中,我们定义了一个名为 generatorFunction 的 Generator 函数。在函数体内,使用 console.log 打印了三个不同的步骤,并在每个步骤后使用 yield 关键字暂停执行。然后,我们通过调用 generator.next() 方法逐步执行 Generator 函数。每次调用 next() 方法时,函数会从上次暂停的地方恢复执行,打印相应的步骤。

通过使用 Generator 函数,可以实现更灵活、可控的异步编程模式,提供更好的代码可读性和维护性。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
八股文2026-08-27
定时器按顺序播放多个音频,切后台音频会乱
本身不会补触发,但 它会被系统级冻结 ——iOS Safari 后台完全停止计时,切回前台后 只补执行一次 (不是不补,而是"缺失的中间状态补不上")。间隔短的不会出大问题, 间隔长的会出现"音频流被压缩" ——切回来后本该播 5 分钟的间隙,实际只过了 3 分钟,结果整段对不上。 核心原则 :定时器只能用来"提醒一次", 真正决定"该不该播"的是绝对时间戳 。 setTimeout 在后台会发生什么(按平台) | 平台 | 后台行为...
面试
八股文2026-08-27
线上项目白屏的原因
白屏的本质是 渲染管线某一环断了 ——可能是资源、JS、接口、路由、样式、兼容性任一环节出问题。排查按"控制台 → 网络 → DOM → 环境"四步定位。 本质(前端类比) 把网页想成一栋楼: 白屏 ≠ 一定是同一种原因——这是面试想听的层次。 六大类原因(按出现频率) | 类别 | 典型表现 | 真实案例 | | : | : | : | | ① 资源加载失败 | DOM 是空的 | 入口 JS 404、CDN 挂了、CSS 阻塞 |...
面试
八股文2026-08-27
背景图就是 1MB 大图,怎么优化
1MB 大背景图优化分 三步 :压缩体积(10 30x)、按需加载(按设备/视口/网速)、渲染期优化(GPU 合成)。背景图跟 不同——它是 CSS,不走浏览器的原生懒加载机制,得手动处理。 背景图 vs 的关键区别(先讲清楚这个) 这是面试官想听的"针对性认知"——背景图不是普通图片,不能套通用方案。 三步优化(按优先级) 第 1 步:压缩体积(最重要,立竿见影) 1MB 的来源一般是这几种 ,对应解决方案: | 原始问题 | 体积来...
面试
八股文2026-08-27
项目里很多图片和视频,怎么优化
图片视频优化分 四层 :网络层(CDN/格式)、加载层(懒加载/预加载)、渲染层(解码/缓存)、业务层(按需/降级)。面试要把这四层都讲到位才算有体系。 四层优化模型 第 1 层:网络层(省钱、省时间) 核心目标:让资源体积小、让用户拿到资源快 | 手段 | 作用 | 关键点 | | : | : | : | | 图片格式 | WebP/AVIF 比 JPEG 小 25 50% | 兼容 fallback | | 视频格式 | H.265...
面试
八股文2026-08-20
Embedding 向量模型:从语义表示到相似度计算
前言 大模型「读懂」文字靠的是 token,但 token 之间只有离散的编号关系,模型并不知道「苹果」和「李子」在语义上很近。要让程序能「理解」两段文字的相似程度,必须先把文本映射成一个 高维向量 ,再用几何方法比较。这一步就是 Embedding。 本篇基于我本地 今天的真实代码,从语义表示讲到余弦相似度,并复盘几个踩过的真实坑。 一、为什么需要 Embedding 传统关键词检索是「字面匹配」: Embedding 做的是「语义匹...
面试
八股文2026-08-19
前端面试100题
前端面试 100 题 适用方向:中高级前端 / React / Vue / Next.js / Nuxt / TypeScript / 工程化 / 实时通信 / Electron / Node.js / AI 应用前端 使用方式:优先掌握“标准回答”,再练“面试官追问”,最后把“结合你的简历怎么答”组织成自己的项目故事。 说明 “结合你的简历怎么答”只使用你简历中已经出现的项目与技术事实。 “标准回答 / 追问”属于通用前端知识总结,用...
面试

评论

请登录后发表评论

去登录
加载评论中...