Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用for of循环时,如何将值传递回生成器函数_Javascript - Fatal编程技术网

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