Javascript 如何向正在运行的发电机提供数据?
我想为正在运行的生成器提供数据 这只是JavaScript代码,代码本身可以运行任何浏览器控制台Javascript 如何向正在运行的发电机提供数据?,javascript,generator,Javascript,Generator,我想为正在运行的生成器提供数据 这只是JavaScript代码,代码本身可以运行任何浏览器控制台 function* getNumbers() { yield 1 yield 5 yield 10 } // retrieving const getThoseNumbers = getNumbers() console.log(getThoseNumbers.set()) console.log(getThoseNumbers.update()) 我期望下一个收益率值为5或10。 但
function* getNumbers() {
yield 1
yield 5
yield 10
}
// retrieving
const getThoseNumbers = getNumbers()
console.log(getThoseNumbers.set())
console.log(getThoseNumbers.update())
我期望下一个收益率值为5或10。
但我收到以下错误消息
- TypeError:getThoseNumbers.set不是函数
- TypeError:getThoseNumbers.update不是函数
函数*getNumbers(){
收益率1
收益率5
收益率10
}
//收回
const gethosenumbers=getNumbers()
//console.log(getThoseNumbers.set())-未捕获类型错误:getThoseNumbers.set不是函数
//console.log(getThoseNumbers.update())-未捕获类型错误:getThoseNumbers.update不是函数
//你应该叫‘next’`
console.log(getThoseNumbers.next())//1
console.log(getThoseNumbers.next())//5
console.log(getThoseNumbers.next())//10
迭代器(就像调用生成器函数时创建的迭代器)有一个属性用于获取下一个值:next
next
是一种方法,它将生成器继续运行,直到下一次生成或返回,并返回对象中生成或返回的任何值。返回对象有两个属性:value
和done
<代码>完成
是一个布尔值,当生成器完成时变为真
请注意,这些都不是set
或update
为什么希望设置或更新?如果希望下一个生成值,请使用.next()
方法?但它从生成器获取数据,而不是向生成器提供数据。我不知道你打算set
或update
做什么。如果你真的想“向生成器提供数据”,你可以在调用next修改某些内部状态时提供一个值。底部是关于高级生成器的部分。不,生成器有方法next
、throw
和return
。它没有done
属性。是的,对不起,我解释得很糟糕。我编辑我的帖子是为了试图澄清。next()
不会返回我知道的普通数字。如果运行code snippet
,您将看到next()
返回的内容