评论由:mikethompson 完成
@Ghadi
为了明确……你用引号引用了这被称为“错误”,这似乎就像它不是一个错误。
但对我来说,这是一个足够真实的“错误”,我必须要么使用分支,要么完全放弃使用core.async。
我需要(<! (timeout 0))表示0,或者尽可能接近0。我需要它按广告宣传的那样工作。当前的实现没有达到0(或接近0),而代替提供了与(<! (timeout 4))相同的结果,而4ms相对于0ms(或接近它)就是永远。每次循环4ms,goloop每秒只能迭代250次。
任何监听爆发式websocket输出的goloop都会遇到这个问题。他们需要疯狂处理(没有4ms延迟)但同时也需要将控制权交还给浏览器,以便浏览器执行它所需要的操作。当浏览器页面失去“焦点”,进入后台,js被节流,动画帧变慢等情况时,所有这些问题都会加剧。