ES6類
_
數據類型:
number、string、boolean、Object、undefined、function
用typeof檢測出來數據類型:
symbol
new Number(12)
new String()
new Array()
symbol 使用情況一般
定義:
let syml = Symbol(‘aaa’);
注意:
1. Symbol 不能new
2. Symbol() 返回是一個唯一值
坊間傳說, 做一個key,定義一些唯一或者私有一些東
3. symbol是一個單獨數據類型,就叫 symbol, 基本類型
4. 如果symbol作爲key,用for in循環,出不來
json -> for in
箭頭函數
() =>{}
generator函數
生成器
解決異步深度嵌套的問題, async
語法:
function * show(){
yield
}
function* show(){
}
function *show(){
}
定義:
function * gen(){
yield 'welcome';
yield 'to';
return '牧碼人';
}
調用:
let g1 = gen();
g1.next(); // {value:'welcome', done:false}
g1.next(); // {value:'to', done:false}
g1.next(); // {value:'牧碼人', done:true}
上述調用,手動調用,麻煩
for .. of 自動遍歷 generator
return的東西,它不會遍歷
generator不僅可以配合 for … of …
還可以:
- 解構賦值:
let [a, …b] = gen(); 擴展運算符
‘…’console.log(…gen());
- Array.from()
console.log(Array.from(gen()));
generator結合 axios數據請求:
異步: 不連續,上一個操作沒有執行完,下一個操作照樣開始
同步: 連續執行,上一個操作沒有執行完,下一個沒法開始
關於異步,解決方案:
a). 回調函數
b). 事件監聽
c). 發佈/訂閱
d). Promise對象
co….
ES2017,規定 async
nodeJs
讀取文件 fs.readFile
1. promise
2. genrator
3. async
async function fn(){ //表示異步,這個函數裏面有異步任務
let result = await xxx //表示後面結果需要等待
}
async特點:
1. await只能放到async函數中
2. 相比genrator語義化更強
3. await後面可以是promise對象,也可以數字、字符串、布爾
4. async函數返回是一個promise對象
5. 只要await語句後面Promise狀態變成 reject, 那麼整個async函數會中斷執行
如何解決async函數中拋出錯誤,影響後續代碼:
a).
try{
}catch(e){
}
b). promise本身catch
個人建議大家:
try{
let f1 = await readFile('data/a.txt');
let f3 = await readFile('data/c.txt');
let f2 = await readFile('data/b.txt');
}catch(e) {}