Generator和async

本文介绍了Generator函数和async/await的使用,强调了它们在处理异步操作中的优势。Generator允许函数分步骤阻塞,而async/await提供了一种更清晰的异步编程方式。通过示例展示了它们如何协同工作,以及在有逻辑判断时如何选择使用。同时,讨论了try...catch在async函数中的作用,以及如何并发执行无依赖关系的异步任务。
摘要由CSDN通过智能技术生成

什么是Generator函数

Generator函数与普通函数的区别是该函数可以分步骤阻塞,不像普通函数需要一路走到底,就像是Generator生成一堆的小函数,只有主动调用next()才会一个个的执行这些小函数。总结起来就是Generator函数中间可以停下来,可以使用yield来暂时的放弃执行。

拿一个形象的例子:普通函数好比是坐高铁或者乘坐飞机,我们只有到达目的地了,才停止下来,中间是不允许有停歇的,但是Generator函数好比是乘坐计程车,当我们需要在某个地方去做什么事,比如上个厕所,是可以叫师傅在某地方等一会,回来了再继续赶往目的地

yield的理解与使用

Generator是一个状态机,封装了多个内部状态,执行 Generator 函数会返回一个遍历器对象,返回的遍历器对象,可以使用next依次遍历Generator函数内部的每一个状态。Generator函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行。Generator 函数的执行必须靠执行器。

yield可以传参也可以返回内容(一般的返回的是上一步执行的结果)。一个yield就是一堵墙,墙的两面都是小的函数,只有墙的一面的函数执行完了,才可以接着执行另一面的函数。如下图帮助理解:
在这里插入图片描述

yield传参的形式与意义,如下图:
在这里插入图片描述
Generatoryield综合使用,如下伪代码:
在这里插入图片描述

Generator相比Promise的优势

Promise也是处理异步的,但为什么会再出现generator,是因为当我们使用promise的时候,如果中间需要有一些逻辑的判断,则这样写出来的promise代码相比普通的函数而言是没有任何的优势的。但是如果使用generator可以简化很多,并且是有序,正确的执行 每道工序。

总结:promise适合处理一次读一堆的异步操作,而generator适合在读的过程中有一些逻辑的处理,分批,有顺序的处理。简单的来说是generator是对promise的封装

async函数

async函数是Generator函数的语法糖,将Generator的星号换成asyncyield</

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值