- 52
- 0
在学习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()函数转换成同步的。
【Ⅲ不知我此处说的对不对?】
不知我的理解有没有问题。
如果有更好的理解方式或是相关文章,也感谢说明或指明。
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

