我正在尝试生成类似的流Bacon.fromPoll
for requestAnimationFrame
为什么下面的代码会产生一个“超出最大调用堆栈" error?
function rafSequence() {
var raf = Bacon.fromCallback(function(callback) {
requestAnimationFrame(function() {
callback(Date.now());
});
});
return raf.merge(raf.flatMap(rafSequence));
}
rafSequence().log();
我想merge()
当 2 个流之一抛出异常时,会进行垃圾收集Bacon.End
(the raf
in raf.merge(...)
。那么为什么会出错呢?
更新:
我已经能够实现一个工作版本,如下所示:
Bacon.repeat(() => Bacon.fromCallback(requestAnimationFrame));
我仍然感兴趣为什么merge()
没有清理。
在当前的 Bacon.js 实现 (0.6.x) 中,所有基于递归的“无限”序列都必然会失败,因为在每一步中,“流堆栈”都会变得更深。我确信有一种方法可以优化实现以更好地应对这种结构,但这绝非微不足道。
对于您的具体情况,fromGenerator
方法将使您的实现更简单。已经有相关代码了这次提交 https://github.com/baconjs/bacon.js/commit/82e860f74ced4a0a2782b06a546bdc9924e321dc,如果你有兴趣的话。如果您有兴趣解决此问题,我建议您使用 Github Issues。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)