function* gen() {
const res = yield some();
return res;
}
co(gen);
如上,some方法是否一定要返回一个Promise?
如果返回Promise,那么res为什么能得到数值而不是Promise实例?
function* gen() {
const res = yield some();
return res;
}
co(gen);
如上,some方法是否一定要返回一个Promise?
如果返回Promise,那么res为什么能得到数值而不是Promise实例?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
是的。因为 yield 后面语句的返回值,是做为 generator.next(data) 的返回值,而传入的参数 data 才是作为 yield 语句的返回值,这样设定才实现的协程的效果。通过 next 函数返回一个 Promise 对象,执行器(这里是 Co 模块)才能实现自动执行 generator 函数。大致思想如下:
详细信息可以看看阮一峰老师的 Es6 教程和 Co 执行器的源代码