调用生成器的下一个函数的循环是否会阻塞浏览器?

时间:2018-06-21 02:58:09

标签: asynchronous generator yield next

TL; DR:javascript generator.next()和相关的yield是否是阻止过程?还是收益率实际上使结果排队?

详细信息:

function* nextIntegerGenerator(index) {
  while (true) {
    yield index++
  }
}
nextInteger = nextIntegerGenerator(0)

这很好。而且,如果我将结果循环显示在页面上几次,则使用空白/新页面(大约:空白),也可以正常工作。

for (let i = 0; i < 10; i++) {
  document.body.innerText = nextInteger.next().value
}

但是,如果我以永久循环的方式进行操作,则页面上不会显示新数字,并且会挂起:

while (true) {
  document.body.innerText = nextInteger.next().value
}

..而我必须杀死该页面。

这使我相信收益正在阻塞,而不是排队。

是真的吗?我试图对此发表明确声明,但失败了。可能就在我的鼻子下面。请指针!

0 个答案:

没有答案