function* 函数名([参数1[, 参数2[, … 参数n]]]) { JS语句 }
调用说明:
1) 调用生成器对象时会返回一个生成器的迭代器
2) 该迭代器中有一个next()方法,它返回一个包含value和done的对象
3) 每次调用next()方法遇到yied表达式位置暂停执行
4) value表示yied表达式的返回值,done表示该生成器最后一个值是否已经产生
5)如果给next()方法传递参数, 参数的值会代替yied表达式的返回值
- 如果在生成器中调用return,生成器将提前完成
三、示例
====
1、定义一个自增生成器函数,每次next()调用返回自增的值
输出如下:
>1 false
2 false
3 false
4 false //想想为什么是false?
undefined true
我们做了什么事:
-
声明一个生成器函数increment(n),每次判断小于n时自增
-
每次自增用yield表达式,返回表达式的值,然后自增(因为是后缀++)
function* increment(n){
var index = 1;
while(index<n)
yield index++;
}
- 调用生成器函数,返回一个迭代器对象,赋给变量it
var it = increment(5);
- for循环遍历
//为什么要多声明一个temp变量?
for(let i = 0; i<5; i++)
{
let temp = it.next();
console.log(temp.value);
console.log(temp.done);
}
直接使用it.next()
for(let i = 0; i<5; i++)
{
console.log(it.next().value);
console.log(it.next().done);
}
//输出为:1, false, 3, false, undefined, true, undefined, true, undefined, true
2、给next()传递参数
function* increment(){
let index = 1;
console.log(yield index++);
console.log(yield index++);
console.log(yield index++);
}
var it = increment();
it.next();
it.next(3);
it.next(9);
输出为:3,9
3、显式返回
function* increment(){
let index = 1;
yield index++;
return “complete”;
yield index++;
yield index++;
}
var it = increment();
尾声
如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android进阶学习资料库
一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
大厂面试真题
PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
《2019-2021字节跳动Android面试历年真题解析》
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
[外链图片转存中…(img-pRtwZ3Zo-1714663832204)]
《2019-2021字节跳动Android面试历年真题解析》
[外链图片转存中…(img-mYsv5S0o-1714663832205)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!