在学习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/150
提交
取消