Javascript yield from the function nested inside generator

后端 未结 4 846
醉酒成梦
醉酒成梦 2021-01-03 23:55

This code generates an error:

function *giveNumbers() {
    [1, 2, 3].forEach(function(item) {
        yield item;
    })
}

This is probabl

4条回答
  •  被撕碎了的回忆
    2021-01-04 00:38

    yield returns the result to the caller.
    let's assume the forEach callback is a generator (it's not a problem to set a costume generator there) - it means tha when the callback yield the result - it yields it back to forEach.

    Basically, in your question what you attemp to do is:

    callback -> yields to forEach -> yields to giveNumbers -> yields to caller
    

    So, forEach should yield the result back to giveNumbers. but since forEach doesn't work like this, it's impossible without re-prototype arrays with costume forEach.

    Actually, you second snippet is the most elegant to begin with.

提交回复
热议问题