JavaScript中的Generator和Async Iterators

以下是关于 JavaScript 中 Generator(生成器)Async Iterators(异步迭代器) 的系统梳理,涵盖核心概念、使用场景、进阶技巧及注意事项,帮助我们掌握异步流程控制和迭代的高级特性。


一、Generator(生成器)

1. 基础概念
  • 定义:通过 function* 定义的函数,可暂停和恢复执行,返回一个 生成器对象(遵循迭代器协议)。
  • 核心关键字
    • yield:暂停函数执行,返回右侧表达式的值。
    • yield*:委托给另一个生成器或可迭代对象。
    • next():恢复执行,直到下一个 yield 或函数结束。
2. 基本用法
function* simpleGenerator() {
   
  yield 1;
  yield 2;
  return 3;
}

const gen = simpleGenerator();
console.log(gen.next()); // { value: 1, done: false }
console.log(gen.next()); // { value: 2, done: false }
console.log(gen.next()); // { value: 3, done: true }
3. 核心特性
  • 惰性求值:按需生成值,节省内存。
  • 双向通信:通过 next(value) 向生成器传递值。
    function* twoWayGen() {
         
      const a = yield '请输入a的值';
      const b = yield '请输入b的值';
      return a + b;
    }
    
    const gen = twoWayGen();
    console.log(gen.next());    // { value: '请输入a的值', done: false }
    console.log(gen.next(10));  // { value: '请输入b的值', done: false }
    console.log

你可能感兴趣的:(前端核心知识总结,前端,javascript)