ES6異步編程基礎語法

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 …

還可以:

  1. 解構賦值:
    let [a, …b] = gen();
  2. 擴展運算符
    ‘…’

    console.log(…gen());

  3. 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) {}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章