iterator 的作用有三個;一是為各種資料結構,提供乙個統一的、簡便的訪問介面;二是使得資料結構的成員能夠按某種次序排列;三是 es6 創造了一種新的遍歷命令for...of迴圈,iterator 介面主要供for...of消費。
方法next()
首先執行第一次next()方法,指標物件iterator中的第乙個成員,後面執行第二個next()方法時,指向第二個成員,以次類推直到執行到return結束
使用**模擬迭代器中next方法
function fib(names)
return arr;
}console.log(fib(7))
第二種:generator生成器封裝,一次一次列印出來。
function* fib2(max)
return
}var a = fib2(6);
for (let i of a)
for...of迴圈可以使用的範圍包括陣列、set 和 map 結構、某些類似陣列的物件(比如arguments物件、dom nodelist 物件)、後文的 generator 物件,以及字串。注意普通物件是沒有iterator介面的。
map和set資料結構的長度都是使用.size屬性測試,由此回想陣列使用length屬性測試長度,物件這種鍵值對不好測試,就使用object.keys(物件名).length借調object的方法來使用
var a =
console.log(object.keys(a).length);
console.log(object.values(a).length)
set定義等常用方法
var set = new set([12, 45, 78, 89]);
set.add('zhuyu');
set.has("zhuyu");
set.delete("zhuyu");
map定義等定義方法
const map1=new map();
//設定key鍵
key1="haha";
key2={};
key3=function(){};
map1.set(key1,'value of');
map1.set(key2,"nice");
map1.set(key3,"hahaha");
console.log(map1.get(key1));
map,set轉換為陣列,使用array.from();
map
for(let [key,value] of map1)=$`);
} for(let key of map1.keys())
for(let key of map1.values())
set
console.log(array.from(set1));
生成器和迭代器,陣列,類陣列物件的遍歷專用方法for of,必須要實現iterator物件
物件專用for in
class person
drive()
}var p = new person()
console.log(p.color);
console.log(p.drive());
class student extends person
}var stu = new student()
console.log(stu.title);
console.log(stu.color);
springmvc使用非同步處理請求
同步請求圖示 同步處理的圖示如上 http請求,tomcat 或其他中介軟體會有乙個相應的執行緒來處理這個 請求,所有的業務邏輯都會在這個執行緒裡去執行,最後返回 響應。但是 tomcat 等中介軟體,它們可以管理的執行緒數是有限的,當數量達到一定程度之後,再有請求進入,會被阻塞掉。簡單非同步圖示 ...
php處理非同步請求 PHP非同步請求實現方式
一.使用fsockopen的方式 我們建立了乙個基於fsockopen的函式,這個函式中利用fsockopen去訪問url,但是在訪問時,並不要求獲取url顯示的內容,而是僅僅發出訪問請求,請求到達後馬上關閉這個訪問.使用fsocketopen 方式傳送非同步請求,put方式 stream set ...
ajax 非同步延遲處理方案
1.post被請求多次,解決方法 連線加入隨機數 rand math.random post order.php?action add rand math.random success function 2.post預設為非同步請求,可是有時候我們會發現,本來要求請求馬上出現,可是非同步會導致後面突...