zoukankan      html  css  js  c++  java
  • js生成器Generator

    js生成器Generator

    使用 function* 语法和一个或多个 yield 表达式以创建一个函数即为生成器,当然它的返回值就是一个迭代器即生成器。

    Generator可以使函数分段执行,yield 可以返回值。调用使用next

    它不同于普通函数,是可以暂停执行的,所以函数名之前要加星号,以示区别。其实整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用 yield 语句注明。

    next 方法的作用是分阶段执行 Generator 函数。每次调用 next 方法,会返回一个对象,这个对象就是具有两个属性(done (done=false) 和 value (value=operand))的 IteratorResult 对象。value 属性是 yield 语句后面表达式的值,表示当前阶段的值;done 属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。

      // 生成器Generator
          function* fun() {
            console.log(1);
            let a = yield "aa";
            console.log(a);
            let b = yield "bb";
            console.log(b);
          }
          let genObj = fun();
          let i = genObj.next(10); //输出1
          let j = genObj.next(20); //输出2
          let m = genObj.next(30); //输出3
          console.log(i, j, m);  //{value: "aa", done: false} {value: "bb", done: false} {value: undefined, done: true}
  • 相关阅读:
    百度地图api应用
    history的使用
    让img居中的方法
    盒子中得文字居中
    盒子居中问题
    ajax问题
    try{}catch(e){}
    常用的简单js方法
    java工作复习——单选下拉列表——检查单选列表的选项文字是否符合期望
    java工作复习——单选下拉列表——select类
  • 原文地址:https://www.cnblogs.com/gao7/p/15019024.html
Copyright © 2011-2022 走看看