0

编写一个生成器,每个 rAF 在另一个生成器中产生 *s(为了在各种条件和时间上执行一些事件序列),通常它工作正常。但是当我在 Safari 中打开或关闭控制台时,生成器停止工作(或更糟)。

它要么使浏览器崩溃,要么引发错误:“TypeError:yield* subGenerator 不是函数。(在 'yield* subGenerator()' 中,'yield* subGenerator' 未定义)”

我环顾了一堆,但找不到相关信息。我尝试将子生成器分配给 var,并记录相关对象以显示额外信息,但没有找到任何提示。

    mainGenerator = function*() {
      while (true) {
        yield* subGenerator()
      }
    }
    
    subGenerator = function*() {
      while (true) {
        yield
      }
    }
    
    update = function() {
      generatey.next()
      window.requestAnimationFrame(update.bind(this));
    
    }
    var generatey = mainGenerator();
    window.requestAnimationFrame(update.bind(this));

JSFiddle 这里:https://jsfiddle.net/hvofwk0z/

运行,然后打开(或关闭)控制台以查看生成器将停止,有时会出现错误,有时会导致选项卡崩溃。

在不破坏页面的情况下无法打开/关闭控制台使调试变得困难。

有什么我想念的吗?我在这里某个地方犯了错误吗?或者这是一个通用的 es6 错误?

4

0 回答 0