向RxJS拖曳坐标流引入背压

时间:2016-01-09 17:45:57

标签: svg rxjs

如果您使用多点触控设备(例如Nexus 7)尝试我demo4项目的svg.rx.js,您会注意到SVG圈落在手指后面。

如果有后来的话,我想跳过坐标,但它似乎并不那么简单。据我所知,RxJS并没有真正缓冲这些值。它可能会使我的应用程序的订阅呼叫失效,一旦发生这种情况,就无法取消这些 - 只是让它们运行。

这是一个非常类似的SO问题11010602,但我当然希望将代码保持在最低限度。

一些更有经验的RxJS老师可以就此提出建议吗?我目前正在使用RxJS 4.0.7,相关代码是here。感谢。

我已经阅读了Backpressure with RxJS,但没有一种方法可行。在应用程序端使用.sample似乎是最好的选择(试图让它工作)。

编辑:

以下是我试图处理它的方式,使用.sampleSubject,每次处理一个坐标时都会触发它 - 从而实现同步设备绘图功能的流(希望如此)。我遇到错误类型的东西,因为它最终没有.onNext

https://github.com/akauppi/svg.rx.js/blob/backpressure/demo/demo4.js

1 个答案:

答案 0 :(得分:1)

  

我遇到错误类型的东西,因为它最终没有.onNext。

您需要直接在主题上调用onNext,以简化:


var time = "5h 10m",
    time_formatted = [0,0,0],
    time_array = time.split(' ');

time_array.forEach(function(element){
    var i = -1;
    if (element.indexOf('h') > -1){
        i = 0;   
    } else if (element.indexOf('m') > -1){
        i = 1;
    } else if (element.indexOf('s') > -1){
        i = 2;
    }

    if (i != -1)
     time_formatted[i] = parseInt(element.substring(0, element.length -1));

    });

console.log(time_formatted);

关于表现&遗漏了价值: Rx有一个setInterval (functionExample, 1000),也许可以帮到你。我猜你可以把它提供给requestAnimationFrame schedulerdragObs采用调度程序参数。

除此之外,RxJS5应该是很多merge