es6(Generator)

2017-10-27  本文已影响8人  余生筑

参考资料

遍历器(Iterator)

const obj = {
  [Symbol.iterator] : function () {
    return {
      next: function () {
        return {
          value: 1,
          done: true
        };
      }
    };
  }
};

Generator

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();
hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }
var g = function* () {
  try {
    yield;
  } catch (e) {
    console.log('内部捕获', e);
  }
};

var i = g();
i.next();

try {
  i.throw('a');
  i.throw('b');
} catch (e) {
  console.log('外部捕获', e);
}
// 内部捕获 a
// 外部捕获 b

Callback下的异步操作

function getA(callback)
{
//getA任务代码
callback()
}
function getB()
{
//getB任务代码
}
getA(getB)

Generator 下的异步操作

function* async(getA,getB)
{
yield getA()
yield getB()
}
function getA()
{
//getA任务代码
}
function getB()
{
//getB任务代码
}
var a=async()
a.next()
a.next()
上一篇下一篇

猜你喜欢

热点阅读