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