Генератор Javascript: как получить объект в качестве параметра для создания другого объекта?
Я пытаюсь получить объект "шаблон" в качестве входных данных для генератора, чтобы получить другие объекты. Я мог бы изменить шаблон непосредственно перед каждым поколением.
Это почти работает, как и ожидалось, но у меня возникла следующая проблема. Я просто собрал упрощенный пример проблемы здесь:
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}
1 ответ
Решение
Причинить вам yield
дважды, один раз, ничего не давая. Выход только один раз:
let obj = {};
while(true) {
obj = yield { name: obj.name };
}