关于es6新属性yield

关于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

你可能感兴趣的:(关于es6新属性yield)