ES6——generator-yield

  • yield

    • 既可传参,又可以返回

    • 第一个next()传参无效,只用来启动

  • 如果函数前漏掉 *

    • 就是普通函数

    • 如果有yield会报错, ReferenceError: yield is not defined

    • yield 只能在Generator函数内部使用

      function * show() {
          console.log('1')
          var a = yield
          console.log('2')
          console.log(a)
      }
      // yield 传参
      var gen = show()
      gen.next() // 1
      gen.next() // 2 和 undefined 因为没有传参,yield没有返回值
      var gen = show()
      gen.next(10) // 1 第一次执行到yield,但没有执行赋值
      gen.next(20) // 2 和 20
      
      function* show2() {
          console.log('1')
          yield 10
          console.log('2')
      }
      // yield 返回
      var gen = show2()
      var res1 = gen.next()
      console.log(res1) // { value: 10, done: false }
      var res2 = gen.next()
      console.log(res2)
      // { value: undefined, done: true } 最后的value需要return返

猜你喜欢

转载自www.cnblogs.com/sylys/p/11649020.html