编写一个生成器,每个 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 错误?