zoukankan      html  css  js  c++  java
  • 理解 ES6 语法中 yield 关键字的返回值

    在 ES6 中新增了生成器函数的语法,本文解释了生成器函数内 yield 关键字的返回值。

    描述

    根据语法规范,yield 关键字用来暂停和继续执行一个生成器函数。当外部调用生成器的 next() 方法时,yield 关键字右侧的表达式才会执行。

    执行结果会转化为一个对象(包含两个属性, value 和 done),作为 next() 方法的返回值。

    对于  var foo = yield expression 语句,yield 左侧变量 foo 的值将在下一次调用 next() 方法时获得,并且等于调用时 next() 方法的参数

    举例

    首先构造一个生成器函数。

    function* numbers() {
        console.log('function start.');
    
        var v1 = yield 0;
        console.log('v1 = ' + v1);
    
        var v2 = yield 1;
        console.log('v2 = ' + v2);
    
        return 5;
    }
    
    var nums = numbers();

    下面调用生成器函数。

    // 第 1 次调用 next, v1 的值还没有返回.
    console.log(nums.next(2)); 

    程序输出如下。

    function start.
    { value: 0, done: false }

    接着,执行第二次调用。

    // 第 2 次调用 next, next 参数作为上一次 yield 值返回给 v1.
    console.log(nums.next(3)); 

    此时程序输出如下。

    v1 = 3
    { value: 1, done: false }

    最后,执行第三次调用。

    // 第 3 次调用 next, 此时 done 的值为 true, 直接返回 return 的值.
    console.log(nums.next(4)); 

    程序结束执行,输出如下。

    v2 = 4
    { value: 5, done: true }

    扩展阅读

    1. yield 关键字
    2. 生成器函数语法 (function*)
    3. 异步操作和Async函数
    作者:星河千里
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    DIV 设置垂直居中
    JavaScript--什么是函数
    JavaScript--引用JS外部文件
    JavaScript--如何插入JS
    CSS-类和ID选择器的区别
    CSS-ID选择器
    CSS类选择器
    CSS样式介绍
    HTML--使用mailto在网页中链接Email地址
    HTML--form表单中的label标签
  • 原文地址:https://www.cnblogs.com/yezhang/p/es6_yield.html
Copyright © 2011-2022 走看看