javascript - es6中Generator函數yield怎麼使用?
先看下程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <code> function wrapper(generatorFunction) {
return function (...args) {
let generatorObject = generatorFunction(...args);
generatorObject.next();
return generatorObject;
};
}
const wrapped = wrapper( function * () {
console.log(`First input: ${yield}`);
return 'DONE' ;
});
wrapped().next( 'hello!' )
|
這個輸出結果怎麼理解呢?想了半天不理解他的運行結果。
還有下面程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code> function * dataConsumer() {
console.log( 'Started' );
console.log(`1. ${yield}`);
console.log(`2. ${yield}`);
return 'result' ;
}
let genObj = dataConsumer();
genObj.next();
genObj.next( 'a' )
genObj.next( 'b' )
|
還是看不懂,請大神幫忙分析上述兩段程式碼,幫我學習Generator函數。謝謝了。