关于es6新属性yield
yield是Generator函数中中断函数返回的一个属性。Generator函数即一个生成器函数,每次执行next会停止在yield属性。多次调用next会依次执行完yield,直到函数执行完毕。
//Generator函数
function* chain(){
yield 'a';
yield 'b';
yield 'c';
return 'end';
}
var exp=chain()
//value是yield后面的值,done表示的是当前函数是否执行完毕
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()也可传入参数,即将传入的参数用作上次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