概念
Generator 函数是协程在ES6的实现,最大的特点就是可以交出函数的执行权(即暂停执行)。
1 2 3 4
| function* gen(x) { var y = yield x + 2; return y; }
|
generator函数是一个封装的异步任务。执行:
1 2 3
| let g = gen(1); g.next() g.next()
|
调用generator函数会返回一个iterator,其next方法会返回一个对象,表示当前阶段的信息,包括value属性(yield语句后面表达式的值),done表示是否执行完毕。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13
| var fetch = require('node-fetch');
function* gen() { var url = 'https://api.github.com/user/github'; var result = yield fetch(url); console.log(result.bio); }
var g = gen(); var result = g.next(); result.value.then(function(data){ return data.json(); }).then(function(data))
|