关于co用法的困惑
node小白,今天学习了下用Node写命令行工具。
然后有个TJ
大神写的co
包:
co(function* (){
yield setTimeout(function() {
console.log(1);
}, 5);
yield setTimeout(function() {
console.log(2);
}, 1);
});
最后这段代码执行的时候只输出了1
。为什么没有输出2
呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的用法不符合规范,co允许yield一个promise、generatior、array、object,但不允许yield一个普通函数,必须是一个范式函数;
yield第一个setTimeout时,该函数正常执行,但是执行之后报错:
报错自然会中断,所以代码不会往下执行,至于为什么知道报上面这个错误,等你细读源码就会一清二楚
tj/co 不完善,你可以使用 hprose 里面的 co 代替 tj/co,这里有一篇介绍的文章:
https://segmentfault.com/a/11...