mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-25 03:02:21 +00:00
修改generator
This commit is contained in:
parent
efb2ef93e7
commit
c4f9c6d931
@ -729,7 +729,7 @@ Q.fcall(step1)
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码已经把回调函数,改成了直线执行的形式。Generator函数可以进一步改善代码运行流程。
|
上面代码已经把回调函数,改成了直线执行的形式,但是加入了大量Promise的语法。Generator函数可以进一步改善代码运行流程。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
|
||||||
@ -786,6 +786,22 @@ function* f(){
|
|||||||
|
|
||||||
上面代码使用Promise的函数库Q,yield语句返回的就是一个Promise对象。
|
上面代码使用Promise的函数库Q,yield语句返回的就是一个Promise对象。
|
||||||
|
|
||||||
|
多个任务按顺序一个接一个执行时,yield语句可以按顺序排列。多个任务需要并列执行时(比如只有A任务和B任务都执行完,才能执行C任务),可以采用数组的写法。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
function* parallelDownloads() {
|
||||||
|
let [text1,text2] = yield [
|
||||||
|
taskA(),
|
||||||
|
taskB()
|
||||||
|
];
|
||||||
|
console.log(text1, text2);
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码中,yield语句的参数是一个数组,成员就是两个任务taskA和taskB,只有等这两个任务都完成了,才会接着执行下面的语句。
|
||||||
|
|
||||||
### (3)部署iterator接口
|
### (3)部署iterator接口
|
||||||
|
|
||||||
利用Generator函数,可以在任意对象上部署iterator接口。
|
利用Generator函数,可以在任意对象上部署iterator接口。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user