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);
  });
});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在此处先列下本篇文章的主要内容 简介 next方法的参数 for...of循环 Generator.prototy...
    醉生夢死阅读 1,463评论 3 8
  • 同步应用 简介 基本概念 Generator函数式ES6提供的一种异步编程解决方案,语法行为和传统函数完全不同.语...
    JarvanZ阅读 1,234评论 0 1
  • 写在前面的话,说真的ES6的每一章节都超级长啊,这一块的学习我用了两天时间才完成。如果不赶紧把总结写出来,我过一段...
    雨飞飞雨阅读 479评论 0 2
  • 简介 基本概念 Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。本章详细介绍...
    呼呼哥阅读 1,095评论 0 4
  • 传统方法 ES6诞生以前,异步编程的方法,大概有下面四种。 回调函数 事件监听 发布/订阅 Promise对象 G...
    oWSQo阅读 820评论 0 1