美文网首页
Generator的一些使用

Generator的一些使用

作者: 吴高亮 | 来源:发表于2019-01-01 22:34 被阅读0次

同时一些例子上的使用;认识一下状态管理函数;

首先还是要了解yield *;

首先如果Generator中调用另外一个Generator是没有效果;

function* foo(){
 yield "x";
 yield "y";
};

function baz(){
yield 'a';
foo();
yield 'b';
};
for(let a of baz()){
console.log(a);
};
//a
//b;

在其中直接执行是没有任何效果的;这个时候就需要使用到;yield *在Generator中执行另外一个Generator函数;

function* bar() {
  yield 'x';
  yield* foo();
  yield 'y';
}

// 等同于
function* bar() {
  yield 'x';
  yield 'a';
  yield 'b';
  yield 'y';
}

// 等同于
function* bar() {
  yield 'x';
  for (let v of foo()) {
    yield v;
  }
  yield 'y';
}

for (let v of bar()){
  console.log(v);
}
// "x"
// "a"
// "b"
// "y"

从语法上讲yield后面跟着的是一个遍历器对象;需要在后面加上*表面后面跟着是一个遍历器对象;

let delegatedIterator = (function* () {
  yield 'Hello!';
  yield 'Bye!';
}());

let delegatingIterator = (function* () {
  yield 'Greetings!';
  yield* delegatedIterator;
  yield 'Ok, bye.';
}());

for(let value of delegatingIterator) {
  console.log(value);
}
// "Greetings!
// "Hello!"
// "Bye!"
// "Ok, bye."

上面代码中,delegatingIterator是代理者,delegatedIterator是被代理者。由于yield* delegatedIterator语句得到的值,是一个遍历器,所以要用星号表示。运行结果就是使用一个遍历器,遍历了多个 Generator 函数,有递归的效果
yield* 后面跟着个Generator函数;默认是部署了一个for循环;

  function* concat(iter1, iter2) {
  yield* iter1;
  yield* iter2;
}

// 等同于

function* concat(iter1, iter2) {
  for (var value of iter1) {
    yield value;
  }
  for (var value of iter2) {
    yield value;
  }
}

相关文章

  • Generator的一些使用

    同时一些例子上的使用;认识一下状态管理函数; 首先还是要了解yield *; 首先如果Generator中调用另外...

  • generator 使用注意事项

    记录下使用generator的注意点1 generator使用this如何处理 function * gen(){...

  • MyBatis Generator Maven插件使用

    title: MyBatis Generator Maven插件使用tags: MyBatis,Generator...

  • express脚手架

    express-generator 安装yarn global add express-generator 使用 ...

  • 策略模式

    Generator概念,泛型中引入的。如果某个工具使用了Generator,那么你就可以通过选择Generator...

  • yeoman自定义脚手架工具

    yeoman的安装和基础使用 安装yeoman 安装对应的generator 通过yo运行generator 自定...

  • MyBatis-Plus 3.5.1代码生成器

    mybatis-plus-generator 使用3.5.1版本,使用的时候踩了一些坑。现在把完整的代码记录一下。...

  • Koa2 搭建个人网站框架

    构建项目 安装koa-generator 使用koa-generator生成koa2项目 -e为使用ejes为模版...

  • Yeoman

    初步使用Yeoman 1.全局安装Yeoman 安装对应的generator 3.通过yo运行generator,...

  • Generator 函数的使用

    Generator 函数的使用 什么是generator函数 由于JavaScript是单线程的, 为了防止耗时的...

网友评论

      本文标题:Generator的一些使用

      本文链接:https://www.haomeiwen.com/subject/remolqtx.html