co.js函数库

1. Generator函数

function* gen(x){
  let y = yield x + 2;
  return y
}

Generator 函数就是一个封装的异步任务。异步操作需要暂停的地方,都用 yield 语句暂停。

let g = gen(1);
g.next() // { value: 3, done: false }
g.next() // { value: undefined, done: true }

next 方法还可以接受参数,这是向 Generator 函数体内输入数据。

var g = gen(1);
g.next() // { value: 3, done: false }
g.next(2) // { value: 2, done: true }

Generator 函数内部还可以捕获函数体外抛出的错误


function* gen(x){
  try {
    var y = yield x + 2;
  } catch (e){ 
    console.log(e);
  }
  return y;
}

var g = gen(1);
g.next();
g.throw('出错了');
// 出错了

2. co 函数库可以让你不用编写 Generator 函数的执行器

var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

var co = require('co');
co(gen);

这样generator函数就会自动执行,co 函数返回一个 Promise 对象,因此可以用 then 方法添加回调函数。

co(gen).then(function (){
  console.log('Generator 函数执行完成');
})

3. 博客(暂时还看不很懂)

  1. co 函数库的含义和用法

你可能感兴趣的:(co.js函数库)