改用co函数，重写yield代码