老师,您好:
1、请问共享数据库连接的时候,为什么需要使用yield呢?
2、如果使用return,可以吗?如果可以比yield优势的地方在哪里?
3、共享数据库连接的“共享"怎么理解呢?每次调用session生成函数的时候不都是新生成一个吗,为什么说是"共享"呢
yield 虽然也是返回函数结果, 但是相对 return, yield 可以“做到一半”就返回, 并将函数挂起在这个位置, 等其他事情做完之后, 再回头从这个位置继续往下执行.
这里用 yield, 是因为我是先“连接上数据库”, 可以读数据啊之类的; 但是这时候前端传回来一组数据, 比如“某件商品的单价”和“商品销售数量”. 我要存的是“销售总额”, 那么后端可能会计算前两个数据的乘积——这就是“另一件事”. 等这个乘法做完了, 我就可以在当前的数据库连接状态下将数字存进去了
return 运行完之后, 函数就跳出了, 不能从“半路”返回去再做. yield 的使用, 极大方便了协程的实现
这个“共享”, 我的理解是一个session 下的所有接口都是“共享”当前的数据库状态. 新的 session 的建立应该是发生在另一个客户端访问的时候. 当然, 这个“共享”也有可能是所有用户的访问, 其数据库状态都是同步的? 不是很确定了