参考:ECMAScript 6 入门
概念:自动执行器
自动执行器就是实现 能依次执行 Generator 函数里异步方法 的一种方法
这部分没啥可讲的,绕来绕去,就是通过各种方法实现多个异步方法依次执行。不过要注意的是,用next执行 yield (异步方法)
再执行next方法,并不意味着上一个异步方法已经执行完了。
var fs = require('fs');
var thunkify = require('thunkify');
var readFileThunk = thunkify(fs.readFile);
var gen = function* (){
var r1 = yield readFileThunk('/etc/fstab'); // 异步方法
console.log(r1.toString());
var r2 = yield readFileThunk('/etc/shells'); // 异步方法
console.log(r2.toString());
};
var g = gen();
// 以下的代码就实现了 Generator 函数里异步方法按序执行,自动执行器的内部原理基本上就是这样的
var r1 = g.next();
// r1.value指的是promise对象,待有执行结果后再执行下一个next
r1.value(function (err, data) {
if (err) throw err;
var r2 = g.next(data);
// r2.value指的是promise对象,待有执行结果后再执行下一个next
r2.value(function (err, data) {
if (err) throw err;
g.next(data);
});
});