新增使用yield方法实现