Skip to the content.

Generator 函数

Generator 是 JS 模拟协程在 ES6 的实现,最大特点是可以交出函数的执行权(暂停执行)

function* gen(x) {
  var y = yield x + 2;
  return y;
}
var g = gen(1);
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }

Generator 函数的数据交换和错误处理

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

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("出错了");
// 出错了

线程和携程的区别



参见