没有合适的资源?快使用搜索试试~ 我知道了~
kaola-fed#blog#generator函数与co函数库1
需积分: 0 0 下载量 184 浏览量
2022-07-25
14:33:55
上传
评论
收藏 5KB MD 举报
温馨提示
试读
(1) 遇到yield表达式,就暂停执行后面的操作,将紧跟在yield后面的表达式的值作为返回对象的value属性值 (2) 如果没有遇到yield会一直运行到
资源推荐
资源详情
资源评论
---
title: generator函数与co函数库
date: 2017-06-27
---
## generator 函数
### 语法
参考:http://es6.ruanyifeng.com/#docs/generator
> 每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。换言之,Generator 函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行。当执行到done为true时,这个generator对象就已经全部执行完毕,不要再继续调用next()了。
### 注意点
(1) 遇到yield表达式,就暂停执行后面的操作,将紧跟在yield后面的表达式的值作为返回对象的value属性值
(2) 如果没有遇到yield会一直运行到return 语句为止
(3) 注意非常重要的一点(看个例子):
* yield XXX 表达式本身并没有返回值,或者说总是返回undefiend。
* 可以把yield理解为一个带有暂停功能的return
```javascript
function* gen(x){
var y = yield x + 2;
return y;
}
var g = gen(1);
g.next() // { value: 3, done: false }
g.next() // { value: undefined, done: true }
```
### 小例子
```javascript
var fs = require('fs');
var readFile = function(fileName) {
return new Promise(function (resolve, reject){
fs.readFile(fileName, function(error, data){
if (error) reject(error);
resolve(JSON.parse(data.toString()));
});
});
}
var gen = function\* () {
var f1 = yield readFile('package.json'); //Promise
var f2 = yield
点击阅读更多
资源评论
艾苛尔
- 粉丝: 26
- 资源: 307
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功