Javascript生成器:如何获取一个对象作为参数生成另一个对象?
Javascript Generator: how to get an object as parameter to generate another object?
我正在尝试获取一个 "template" 对象作为生成器的输入,以便获取其他对象。我可以在每一代之前更改模板。
它几乎按预期工作,但我遇到了以下问题。我只是在这里整理了一个简化的问题示例:
function* generator () {
while(true) {
let obj = yield
yield {
name: obj.name
}
}
}
let gen = generator()
let obj = {
name: 'name'
}
gen.next(obj)
obj.name = 'test'
for(let i=3; i--; ) {
let item = gen.next(obj).value
console.log(JSON.stringify(item))
}
我期待得到结果:
{name: test}
{name: test}
{name: test}
但是,我得到:
{name: test}
undefined
{name: test}
造成你yield
两次,一次一无所获。只产出一次:
let obj = {};
while(true) {
obj = yield { name: obj.name };
}
我正在尝试获取一个 "template" 对象作为生成器的输入,以便获取其他对象。我可以在每一代之前更改模板。
它几乎按预期工作,但我遇到了以下问题。我只是在这里整理了一个简化的问题示例:
function* generator () {
while(true) {
let obj = yield
yield {
name: obj.name
}
}
}
let gen = generator()
let obj = {
name: 'name'
}
gen.next(obj)
obj.name = 'test'
for(let i=3; i--; ) {
let item = gen.next(obj).value
console.log(JSON.stringify(item))
}
我期待得到结果:
{name: test}
{name: test}
{name: test}
但是,我得到:
{name: test}
undefined
{name: test}
造成你yield
两次,一次一无所获。只产出一次:
let obj = {};
while(true) {
obj = yield { name: obj.name };
}