es6之yield

yield 關鍵字用來暫停和繼續一個生成器函數。咱們能夠在須要的時候控制函數的運行。
  yield 關鍵字使生成器函數暫停執行,並返回跟在它後面的表達式的當前值。與return相似,可是能夠使用next方法讓生成器函數繼續執行函數yield後面內容,直到遇到yield暫停或return返回或函數執行結束。函數

yield 關鍵字用來暫停和繼續一個生成器函數。咱們能夠在須要的時候控制函數的運行。
  yield 關鍵字使生成器函數暫停執行,並返回跟在它後面的表達式的當前值。與return相似,可是能夠使用next方法讓生成器函數繼續執行函數yield後面內容,直到遇到yield暫停或return返回或函數執行結束。spa

function* ge() {    //聲明時須要添加*,普通函數內部不能使用yield關鍵字,不然會出錯
  yield '1';
  yield '2';
  yield '3';
  return '4';
}

var a = ge();    //調用函數後不會運行,而是返回指向函數內部狀態的指針
a.next();    // { value: '1', done: false }   遇到yield暫停
a.next();    // { value: '2', done: false }
a.next();    // { value: '3', done: false }
a.next();    // { value: '4', done: true}    函數執行完畢,返回done
a.next();    // { value: undefined, done: true}  已經執行完畢,返回undefined

若是next沒有帶有參數true,yield不能返回值,返回undefined;next函數帶有參數true,即.next(true)時,那麼yield就能夠返回表達式的值,用於賦值。若是next帶有其餘參數,那麼它就會將當前yield返回值置爲該參數.如:var i = yield 1;意思是將1賦值給i.指針

運行以下圖:code

相關文章
相關標籤/搜索