为了账号安全,请及时绑定邮箱和手机立即绑定

请问:为什么要用yield,直接使用return不行吗

老师,您好:

1、请问共享数据库连接的时候,为什么需要使用yield呢?

2、如果使用return,可以吗?如果可以比yield优势的地方在哪里?

3、共享数据库连接的“共享"怎么理解呢?每次调用session生成函数的时候不都是新生成一个吗,为什么说是"共享"呢

正在回答

1 回答

  1. yield 虽然也是返回函数结果, 但是相对 return, yield 可以“做到一半”就返回, 并将函数挂起在这个位置, 等其他事情做完之后, 再回头从这个位置继续往下执行.

    这里用 yield, 是因为我是先“连接上数据库”, 可以读数据啊之类的; 但是这时候前端传回来一组数据, 比如“某件商品的单价”和“商品销售数量”. 我要存的是“销售总额”, 那么后端可能会计算前两个数据的乘积——这就是“另一件事”. 等这个乘法做完了, 我就可以在当前的数据库连接状态下将数字存进去了

  2. return 运行完之后, 函数就跳出了, 不能从“半路”返回去再做. yield 的使用, 极大方便了协程的实现

  3. 这个“共享”, 我的理解是一个session 下的所有接口都是“共享”当前的数据库状态. 新的 session 的建立应该是发生在另一个客户端访问的时候. 当然, 这个“共享”也有可能是所有用户的访问, 其数据库状态都是同步的? 不是很确定了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问:为什么要用yield,直接使用return不行吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信