es6新特性之generator
来源:互联网 发布:微博怎么设置个性域名 编辑:程序博客网 时间:2024/05/18 01:13
以下内容来自https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000
1、generator由 function*定义,且除了return语句还可以用yield返回
function* test(x){ yield x+1; yield x+2; return x+3;}
2、调用
test(1)只是创建了一个generator对象,
a、调用方式一:
var f = test(1);
f.next();
…
next()方法会执行generator的代码,然后,每次遇到yield 就返回一个对象{value: x, done: true/false},然后“暂停”。返回的value就是yield的返回值,done表示这个generator是否已经执行结束了。如果done为true,则value就是return的返回值。
当执行到done为true时,这个generator对象就已经全部执行完毕,不要再继续调用next()了
b、用for .. of循环迭代
'use strict'function* fib(max) { var t, a = 0, b = 1, n = 0; while (n < max) { yield a; [a, b] = [b, a + b]; n ++; } return;}for (var x of fib(10)) { console.log(x); // 依次输出0, 1, 1, 2, 3, ...}
3、ajax中的使用
嵌套使用ajax时非常麻烦如:
ajax('http://url-1', data1, function (err, result) { if (err) { return handle(err); } ajax('http://url-2', data2, function (err, result) { if (err) { return handle(err); } ajax('http://url-3', data3, function (err, result) { if (err) { return handle(err); } return success(result); }); });});
如果使用generator,代码如下:
try { r1 = yield ajax('http://url-1', data1); r2 = yield ajax('http://url-2', data2); r3 = yield ajax('http://url-3', data3); success(r3);}catch (err) { handle(err);}
阅读全文
0 0
- es6新特性之generator
- ES6新特性之生成器函数 (generator function)- function-
- ES6核心内容之新特性
- ES6新特性之promise
- ES6新特性:Generator以及衍生NPM库CO入门
- ES6新特性之解构使用细节
- ES6新特性之Symbol使用细节
- 轻松学会ES6新特性之生成器
- ES6新特性之let命令--读书笔记
- ES6之-字符串的新特性
- ES6新特性之Promise篇
- JavaScript之ES6的常用新特性
- es6新特性之箭头函数
- 12、ES6 之Generator
- ES6之Generator
- 【ES6】ES6的新特性
- ES6:JavaScript 新特性
- ES6新特性概览
- LeetCode String to Integer (atoi)
- 2017 后端面试经历分享
- JS闭包
- 【计算机视觉】【神经网络与深度学习】深度学习在图像超分辨率重建中的应用
- 目录——Web第三阶段:Javascript
- es6新特性之generator
- Codeforce 868 C Qualification Rounds (计数原理)
- 多媒体编辑模块架构设计
- HDU5655
- 达内课程-高级流/操作流BufferedOutputStream/BufferedInputStream
- leetcode013-Maximal Square(dp)
- Django的国际化
- 对象构造和初始化
- hexo yilia主题添加文章访问量统计