yield

yield* 后面接受一个 iterable object 作为参数,然后去迭代(iterate)这个迭代器(iterable object),同时 yield* 本身这个表达式的值就是迭代器迭代完成时(done: true)的返回值。调用 generator function 会返回一个 generator object,这个对象本身也是一种 iterable object,所以,我们可以使用 yield* generator_function() 这种写法。
yield 是为了解决 node.js 异步回调问题,主要是写法上的同步



https://blog.csdn.net/qq_21816375/article/details/74820568

yield* 的作用



用原生语法,抛弃 co 的黑魔法,换取一点点点点性能提升
明确表明自己的意图,避免混淆
调用时保证正确的 this 指向



egg的文档,以及网上看到大多数对于co的使用,都是用yield而不是yield来串联异步流,而实际上用yield能在捕获异常时获得更完整的call stack(yield只能获得抛出层的调用信息,父级调用信息被丢失)



https://github.com/eggjs/egg/issues/1251


Category algorithm