js中的Generators函数
js中的Generators函数
generator一般操作
generator函数的作用就是函数体分段执行,yield表示分隔点
function *test() {
console.log(1);
yield 1;
console.log(2);
yield 2;
console.log(3);
yield 3;
} var g = test(); console.log(g.next()) // { value: 1, done: false }
console.log(g.return(2)) // { value: 2, done: true },return不执行任何函数体,直接结束函数执行
console.log(g.next()) // { value: undefined, done: true }
捕获异常
function *test() {
try {
yield 1;
yield 2;
} catch (error) {
console.log(error.message);
}
} var g = test(); console.log(g.next())
console.log(g.throw(new Error("Error"))) // { value: undefined, done: true } 捕获异常,同时结束函数执行
console.log(g.next())
传递值给generator函数
function *test() {
var s;
s = yield;
console.log(s);
s = yield;
console.log(s);
} var g = test(); g.next(); // 第一次调用next会无视传递的value
g.next(1); // 第二次传递value现在才有用
yield代理到其他的generator函数
function *test() {
yield 1;
yield *other();
} function *other() {
yield 2;
yield 3;
}
var g = test(); console.log(g.next()) // 1
console.log(g.next()) // 2
console.log(g.next()) // 3
遍历generator函数
function *test() {
yield 1;
yield 2;
yield 3;
} for(let item of test()) {
console.log(item);
} // 1 2 3
js中的Generators函数的更多相关文章
- js中的回调函数的理解和使用方法
js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...
- underscore.js中的节流函数debounce及trottle
函数节流 throttle and debounce的相关总结及想法 一开始函数节流的使用场景是:放止一个按钮多次点击多次触发一个功能函数,所以做了一个clearTimeout setTimeou ...
- js中如何在一个函数里面执行另一个函数
1.js中如何在函数a里面执行函数b function a(参数c){ b(); } function b(参数c){ } 方法2: <script type="text/javasc ...
- JavaScript -- 时光流逝(七):js中的全局函数
JavaScript -- 知识点回顾篇(七):js中的全局函数 全局函数可用于所有内建的 JavaScript 对象. (1) encodeURI():把字符串编码为 URI. <script ...
- js中的匿名函数和匿名自执行函数
1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id ...
- JS中关于把函数作为另一函数的参数的几点小总结
//JS中关于把函数作为函数的参数来传递的问题的小总结//第一,最简单的形式无参函数,直接形式函数的函数名放到括号中,再在执行部分这个函数即可.//当然调用时要穿另一个真正的定义好的函数/*funct ...
- JS中的回调函数实例浅析
本文实例讲述了JS中的回调函数.分享给大家供大家参考,具体如下: 在说回调函数之前,不妨先看一段代码,相信有点js基础的同学都能明白他的含义: ? 1 2 3 document.getElementB ...
- js中关于事件处理函数名后面是否带括号的问题
今天总结一个关于事件处理程序的小细节.首先回顾一下事件处理的一些概念. JS中的事件处理(事件绑定)就是让某种或某些事件触发某些活动.有两种常见的形式,分别是DOM Level 0 和DOM Leve ...
- js中的匿名函数自执行
随笔,java中因为有修饰符的存在,那就有private类的存在,js不一样,没有修饰词一说,因此为了防止全局变量的污染,js中就出现了匿名函数,直接上code,看到的人可以自己体会: (functi ...
随机推荐
- 连接mysql报错:error 2003 (hy000):can't connect to mysql server on 'localhost' (10061)
一.mysql 的bin目录下有个MySQLInstanceConfig.exe,运行就可以进行创建数据库实例,创建实例时也可以生成windows 服务,把服务设置成自动启动就可以了 二.安装在D盘的 ...
- opencv:通过滑动条调节亮度和对比度
示例代码: #include <opencv.hpp> using namespace cv; using namespace std; void on_change(int, void* ...
- SpringBoot_10_打成jar包后使用外部配置文件中的配置来启动工程
一.前言 三.参考资料 1.Spring Boot配置文件放在jar外部
- List列表按照对象进行排序
在某些业务场景下需要根据list列表中对象的字段进行排序.今天就以实例说明: 实体类 public class Product { private int discount; // 省略getter/ ...
- B. Clique Problem(贪心)
题目链接: B. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Unity的Update() 和 FixedUpdate()的区别
Update() 和 FixedUpdate()在游戏中都会在更新的时候自动循环调用. 但是Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体 ...
- ORM 模型层
一个模型就是一个单独的,确定的数据的信息源,包含了数据的字段和操作方法.通常,每个模型映射为一张数据库中的表 基本原则: 每个模型在Django中的存在形式为一个python类 每个模型都是djang ...
- MySql必知必会实战练习(五)存储过程
1. 为什么使用存储过程? (1) 通过把处理封装在容易使用的单元中,简化复杂操作 (2) 为了保证数据的完整性,不要求反复建立一系列的处理操作,所有开发人员和应用程序都使用同一(试验和测试)存储过程 ...
- AngularJS方法 —— angular.bootstrap
描述: 此方法用于手动加载angularjs模板 (官方翻译:注意基于端到端的测试不能使用此功能来引导手动加载,他们必须使用ngapp. angularjs会检测这个模板是否被浏览器加载或者加载多次并 ...
- thunderbird 设置 邮件回复时内容在上方显示
1 . 编辑->属性 2.选择当前账户,在弹出窗体的右下角 选择 管理标示 ,在弹出窗中选择编辑 3.在弹出标识设置窗体中选择 编写&地址簿 选项卡选择 在引用内容之前回复