评论由:mikethompson 创建
@Ghadi
为了清楚起见...你用引号来指这个为“错误”。几乎像它不是一个错误。
但是对我来说,这是一个相当真实的“bug”,我不得不选择使用分支,或者完全放弃使用 core.async。
我需要 (<! (timeout 0)) 表示 0,或者尽可能接近 0。我需要它按照广告宣传的来工作。当前的实现并没有达到 0(或尽可能接近 0),而是与 (<! (timeout 4)) 一样,4 毫秒与 0 毫秒(或尽可能接近 0)相比是“永远”。每次循环 4 毫秒,一个 goloop 每秒只能迭代 250 次。
任何有一个 goloop 去监听突发式 websocket 输出的人都会遇到这个问题。他们需要疯狂地进行处理(没有 4 毫秒的延迟),但同时也需要返回控制权,让浏览器完成它需要做的事情,每隔一段时间做一次。当浏览器页面失去“焦点”、进入后台并且 js 被节流、动画帧减慢等,所有这些都变得更糟。