生成器函数

生成器函数(Generator function)是一种特殊的函数,它可以在函数执行过程中暂停和恢复。它使用一种特殊的语法来定义函数,即在函数名前加上一个星号 *。

生成器函数可以通过 yield 关键字来定义一个或多个可以被暂停和恢复执行的点。每次调用生成器函数时,它都会返回一个称为生成器(Generator)的对象。通过调用生成器对象的 next() 方法,可以逐步执行生成器函数中的代码,并在每个 yield 关键字处暂停执行,并返回一个具有当前状态的对象。

生成器函数的用途之一是实现可迭代对象和迭代器。可迭代对象是指具有可以迭代的特性,比如数组、字符串和 Set 等。通过在生成器函数中使用 yield 关键字,可以逐个产生可迭代对象的元素,而无须一次性生成所有元素,从而节省内存和提高效率。

另一个用途是处理异步操作。生成器函数与 yield 结合使用可以实现异步操作的顺序控制。通过将异步操作封装在生成器函数中,并在适当的地方使用 yield 暂停执行,就可以在异步操作完成后再恢复生成器函数的执行。这种方式可以避免回调函数或复杂的异步处理逻辑,使异步代码看起来更像同步代码。

下面是一个使用生成器函数的示例:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=4e87f2c39cab4f9da3226af76ad6a224
全部评论

相关推荐

06-19 00:10
已编辑
天津科技大学 前端工程师
参加了作业帮北京的一面,整体八股文偏多,面试过程大概45分钟,中间穿插着读代码,最后有一个写代码的题。整个过程我是有问必答,因为都是平时面试经常会被问到的些问题,比如“闭包”,“vue2和vue3的响应式原理”,“websocket的心跳机制”等等,问过很多次,所以自己也是做了很多的思考和总结。因此回答的时候也是尽可能从设计和源码层面去解释,在这里就不展开细节说了。读代码环节也都是很基础的题型,比如考察var声明的变量导致的变量提升,宏微任务的日志打印顺序等,最后有一个红黄绿灯的间隔一秒输出打印。整体的感觉就是我自我感觉非常良好,并且以过往的面试经验来说,一面通过是有至少9成的把握。可面试结束后第二天就收到了简历进入他们人才库的邮件,还是感到蛮意外的。因此打电话问询了HR,想进一步了解不合适的具体原因。HR说只知道结果,不知道具体原因,最后就这样不了了之了。我也面了大大小小不下50家公司了,大公司小公司都有,只要真诚的主动询问面试未通过的结果,几乎所有公司都愿意给出不合适的理由和建议。再次回顾整个面试过程,没有发现有什么表现得不好的地方,面试官整个过程也没有提出任何质疑,也没有探讨。总而言之,就是一次体验非常糟糕的面试,浪费时间的一次面试经历。毫无成长性可言。
查看6道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务