美文网首页
ES6中关键字yield

ES6中关键字yield

作者: FateOfKing | 来源:发表于2019-09-26 08:54 被阅读0次

yield需要配合Generator使用。
我总结了一下,一共两个特性。

  1. 直接调用Generator函数时不会执行任何操作需要配合next()使用
  2. 在Generator函数中会分段执行。
    一个简单的小栗子,解释的明明白白。
let go = function* (x) {
    console.log('1', x);
    let a = yield x;
    console.log('3', x);

    console.log('4', a);

    let b = yield (x + 1) + a;

    return a + b;
}
go(10);
let g = go(10);
console.log(g.next());
console.log(g.next(100));
console.log(g.next(1000));

打印输出为

image.png

运行顺序:

  1. go(10)
    没有执行任何操作
  2. console.log(g.next());
    执行了
console.log('1', x);
let a = yield x;

并且在let a = yield x;处暂停住,并且返回yield后面的值x,并放入返回对象的value中。
yield会返回一个对象{value:1,done:false}
value表示yield后面的值,done表示是否已经完成了Generator函数。
xgo(10)传入了10所以打印出来前两部是 10{value:10,done:false}

  1. console.log(g.next(100));
    继续执行
let a = yield x;
console.log('3', x);
console.log('4', a);
let b = yield (x + 1) + a;

let a = yield x;处继续向下执行,a = yield x的值从g.next(100)传入100,因此a=100
x值不变依然为10
打印 3 104 100
执行到 let b = yield (x + 1) + a;,准确的说应该是yield (x + 1) + a
返回{value: 111, done: false}

  1. console.log(g.next(1000));
    执行最后一个yield
    b等于g.next(1000)传入的1000
    Generator函数返回 a+b等于1100
    所以答应{value: 1100, done: true}

仔细看完,yield基础用法没问题了。

相关文章

  • js中yield

    在ES6中新增关键字yield,官方介绍如下 The yield keyword is used to pause...

  • 深入理解js中的yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • # 深入理解js中的yield

    yield是什么 yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器...

  • Python yield关键字

    Python中yield关键字解释 这篇文章关于python的yield关键字。并且文章中会解释什么是yield,...

  • 解析 ES6 中 yieId 与 Generator

    yieId :yield是 ES6 的新关键字,使生成器函数执行暂停 Generator:(生成器)是ES6标准引...

  • redux-saga

    Redux-saga主要用来执行数据流中的异步操作。主要通过ES6中的generator函数和yield关键字来以...

  • ES6中关键字yield

    yield需要配合Generator使用。我总结了一下,一共两个特性。 直接调用Generator函数时不会执行任...

  • ES6——Generator

    ES6 新引入了 Generator 函数,可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了...

  • Generator 函数

    ES6 新引入了 Generator 函数,可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了...

网友评论

      本文标题:ES6中关键字yield

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