ES6学习笔记(19)之 Generator 函数的异步应用

参考: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);
  });
});

你可能感兴趣的:(ES6学习笔记(19)之 Generator 函数的异步应用)