为了账号安全,请及时绑定邮箱和手机立即绑定

关于Generator的一点疑问

关于Generator的一点疑问

呼如林 2018-10-24 20:56:04
在学习js中generator/promise/async-await等知识时遇到了一个generator函数的问题:var fetch = require('node-fetch');function* gen(){  var url = 'https://api.github.com/users/github';  var result = yield fetch(url);  console.log(result.bio); }这段代码描述了一个简单的generator的用法,使用时需要对next()函数获得的promise返回值多次then(),从而获取最终的json变量,传入第二个next()函数中。可以看到,代码中的result变量就是那个promise,而result.bio实际上是不存在,或者说不对的, 应该是result.then(...).then(...).bio。【Ⅰ不知我此处说的对不对?】所以关于generator的自动执行,使用async-await的方式,实际上是把对多个promise返回值进行获取(获取成功时的value)并最终传给下一个next()函数。而generator函数内容中yield之后的部分对yield语句的值(上述代码中的result)的使用,其实就是把他替换成了这个最终的value来使用。【Ⅱ不知我此处说的对不对?】最后,generator以及async-await的使用,其实就是将本是异步的promise.then()函数转换成同步的。【Ⅲ不知我此处说的对不对?】不知我的理解有没有问题。如果有更好的理解方式或是相关文章,也感谢说明或指明。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信