Javascript 当使用for of循环时,如何将值传递回生成器函数
我正在学习生成器和迭代器,但我不知道,也找不到在使用Javascript 当使用for of循环时,如何将值传递回生成器函数,javascript,Javascript,我正在学习生成器和迭代器,但我不知道,也找不到在使用for of循环迭代对象时如何将值传递回生成器对象的任何细节。我希望在每次迭代时都将计数器值传回。这怎么可能 function generate(time, id) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`ALERT: ${id}`) resolve(`${id} success.`)
for of
循环迭代对象时如何将值传递回生成器对象的任何细节。我希望在每次迭代时都将计数器值传回。这怎么可能
function generate(time, id) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`ALERT: ${id}`)
resolve(`${id} success.`)
}, time)
})
}
function* generator() {
const testA = yield generate(3000, 'A')
console.log(`Returned: ${testA}`)
const testB = yield generate(500, 'B')
console.log(`Returned: ${testB}`)
const testC = yield generate(300, 'C')
console.log(`Returned: ${testC}`)
}
async function test() {
let counter = 1
const genObj = generator()
// await genObj.next(counter).value
// counter += 1
// await genObj.next(counter).value
for (x of genObj) {
console.log('From here.')
const t = await x
counter += 1
console.log(t)
}
}
test()
根据规范,这是不可能的,因为当在迭代器循环中使用时,如
for。。。属于
for of语句和迭代器的其他常见用户不通过
任何参数,因此迭代器对象期望在这样的
态度必须准备好处理被调用时没有任何争论
因此,在您的情况下,您必须执行一个循环,在此循环中,您显式地调用
next()
手动调用每个next
,您将调用wait genObj.next(counter).value
以将计数器传递回生成器For in
将.value
返回为x
。如何将计数器
传递到x
?