JavaScript 生成器 : how to get an object as parameter to generate another object?

标签 javascript generator es6-generator

我正在尝试获取"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}

最佳答案

因为你屈服两次,一次什么也没有产生。仅产生一次:

 let obj = {};
 while(true) {
    obj = yield { name: obj.name };
 }

关于JavaScript 生成器 : how to get an object as parameter to generate another object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55953680/

相关文章:

java - 如何洗牌对

javascript - 是否有与 python zip 函数等效的 javascript async ?

包含一个或多个指定字母的字符串的 JavaScript 正则表达式

javascript - 尝试在 ember 中查找记录和销毁记录时,DELETE 请求在 GET 请求之前完成

python - 使用 Python Bottle、Multiprocessing 和 gevent 的流式连接

php - 将生成器与由 ORM 形成或从数据库中混合的模型实体一起使用

javascript - 如何将jquery对象转换为可用的html?

javascript - 在js文件之间共享对象的最佳方式

javascript - Ant Design Pro 登录问题。看不懂代码