ECMA Script 6_Generator

Genertor 編程

是一個普通函數,可是有兩個特徵: 異步

  • function 關鍵字 與 函數名之間有一個星號;
  • 函數體內部使用 yield 表達式,定義不一樣的內部狀態(yield 在英語裏的意思就是「產出」)

調用 Generator 函數後,該函數並不執行,異步編程

返回的也不是函數運行結果,而是一個指向內部狀態的指針對——遍歷器對象(Iterator Object)函數

必須調用 遍歷器對象 newIterator.next() 方法,使得指針移向下一個狀態,spa

直到遇到 yield,yield 表達式就是暫停標誌,並將緊跟在 yield 後面的那個表達式的值,做爲返回的對象的 value 屬性值指針

  • function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; }; var newIterator = helloWorldGenerator(); // 還未執行
    hw.next();    // { value: 'hello', done: false } // 屬性 就是當前 表達式的值
    hw.next();    // { value: 'world', done: false }
    hw.next();    // { value: 'ending', done: true } // 遍歷已經結束了

    hw.next();    // { value: undefined, done: true } //
    valueyieldhello

該函數有三個狀態:'hello','world' 和 return 語句(結束執行)code

ES6 提供的一種異步編程解決方案,語法行爲與傳統函數徹底不一樣對象

語法上,首先能夠把它理解成,Generator 函數是一個狀態機,封裝了多個內部狀態blog

執行 Generator 函數會返回一個遍歷器對象,返回的遍歷器對象,能夠依次遍歷 Generator 函數內部的每個狀態io

4

4

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

55

5

5

5

5

5

5

5

5

55

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

5

相關文章
相關標籤/搜索