關于es6新屬性yield
yield是Generator函數(shù)中中斷函數(shù)返回的一個屬性绣檬。Generator函數(shù)即一個生成器函數(shù)轴踱,每次執(zhí)行next會停止在yield屬性。多次調用next會依次執(zhí)行完yield,直到函數(shù)執(zhí)行完畢。
//Generator函數(shù)
function* chain(){
yield 'a';
yield 'b';
yield 'c';
return 'end';
}
var exp=chain()
//value是yield后面的值,done表示的是當前函數(shù)是否執(zhí)行完畢
console.log(exp.next())//{value: "a", done: false}
console.log(exp.next())//{value: "b", done: false}
console.log(exp.next())//{value: "c", done: false}
console.log(exp.next())//{value: "end", done: true}
next()也可傳入參數(shù)右蕊,即將傳入的參數(shù)用作上次yield的值
function* num_G(){
let a=1;
let b=yield (++a);
let c=yield (++b);
let d=yield (++c);
return 'end';
}
var fun=num_G()
var fun1=num_G()
console.log(fun.next())//{value:2,done:false}
console.log(fun.next(1))//{value:2,done:false}
console.log(fun.next(4))//{value:5,done:false}
console.log(fun1.next(2))//{value:2,done:false}
for..of用于Generator
function* chain(){
yield 'a';
yield 'b';
yield 'c';
return 'end';
}
for(let i of chain()){
console.log(i)
}
//a
//b
//c