Generator函数是手动协程,靠yield暂停恢复;async函数是自动Promise化语法糖,用await封装异步等待;二者机制不同但可协作,async本质是generator+自动runner的高级抽象。

Generator 函数和 async 函数都用于处理异步流程,但机制不同:Generator 是“可暂停执行的函数”,靠 yield 交出控制权;async 函数是语法糖,底层基于 Promise 和状态机,自动处理异步等待。二者可配合使用(比如用 async 驱动 generator),但设计目标和使用场景有明显区别。
Generator 函数:手动协程,靠 yield 暂停与恢复
Generator 函数用 function* 声明,返回一个迭代器对象。每次调用 next(),函数执行到下一个 yield 表达式就暂停,并把 yield 后的值作为 { value, done } 返回。
关键点:
- 函数体不会立即执行,只在首次调用
next()时开始 -
yield不是返回值,而是“产出”并暂停;后续next(arg)的参数会成为上一个yield表达式的返回值(可用于双向通信) - 可多次暂停/恢复,适合实现自定义迭代、状态机、协程调度
例如:
标签: javascript java js json ai 区别 red
还木有评论哦,快来抢沙发吧~