JavaScript设计模式-0001---迭代器模式
2020-06-07 本文已影响0人
八月飞花
使用闭包实现迭代器
//传入nex需要迭代的对象
function Iterator(obj){
let i = 0;
return
next:function(){
return i<obj.length?
{value:obj.value,done,false}:
{done,true};
}
test
let arr=[1,2,3,4,5];
let it=Iterator(arr);
//使用next方法将数据逐个的取出
console.log(it.next());//{value:1,done:false};
es6使用 生成器实完成迭代器模式
function* iterator(){
yelid 1;
yelid 2;
yelid 3;
}
使用es6的生成器实现数据自增
只需要让while循环为死循环,但是yelid需要写在while之中,此时,每次调用这个函数的next的方法
自动返回自增的id值
function addId(){
let id=0;
while(true){
yelid id++;
}
}
迭代器/es6的生成器的使用场景
场景1
我们在QQ中有一个 附近喜欢的人的功能 ,服务器在请求完数据之后,
浏览器可以将数据进行一个迭代器包装,这样可以一个一个的取数据
我们可以通过时间,将获取的数据的每一项都单独的展示,
好处,如果是点击一次请求一次的话,会增加服务器的负担,而且频繁发送ajax
等网络请求,可能发生交互卡顿等现象