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。 但

我想为正在运行的生成器提供数据

这只是JavaScript代码,代码本身可以运行任何浏览器控制台

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()
返回的内容