在下面的代碼:合併性能
http://jsfiddle.net/staltz/4gGgs/27/
var clickStream = Rx.Observable.fromEvent(button, 'click');
var multiClickStream = clickStream
.buffer(function() { return clickStream.throttle(250); })
.map(function(list) { return list.length; })
.filter(function(x) { return x > 1; });
// Same as above, but detects single clicks
var singleClickStream = clickStream
.buffer(function() { return clickStream.throttle(250); })
.map(function(list) { return list.length; })
.filter(function(x) { return x === 1; });
// Listen to both streams and render the text label accordingly
singleClickStream.subscribe(function (event) {
document.querySelector('h2').textContent = 'click';
});
multiClickStream.subscribe(function (numclicks) {
document.querySelector('h2').textContent = ''+numclicks+'x click';
});
Rx.Observable.merge(singleClickStream, multiClickStream)
.throttle(1000)
.subscribe(function (suggestion) {
document.querySelector('h2').textContent = '';
});
多少次點擊流序列將merge
後重復? 我的意思是,它看起來就像這樣:
情況1
for(numclicks : clickStream.length){
if (numclicks === 1){
document.querySelector('h2').textContent = 'click';
}
};
for(numclicks : clickStream.length){
if (numclicks > 1){
document.querySelector('h2').textContent = ''+numclicks+'x click';
}
};
否則將被內部,真的合併,這樣的(僞):
情況下2
for(numclicks: clickStream.length){
if (numclicks === 1){
document.querySelector('h2').textContent = 'click';
}else if(numclicks > 1){
document.querySelector('h2').textContent = ''+numclicks+'x click';
}
}
我個人認爲,這只是順序合併將流應用於其參數(案例1)。
P.S.我希望有這樣的事情有一些標準。但是如果沒有 - 我對RxCpp和鈉的實施特別感興趣。 我以js爲例,更具互動性。
1)「rxcpp缺少允許observable觸發轉換到新緩衝區的緩衝區過載」 - 這是什麼意思? 2)是否可以修改LINQ,所以'if's變成'ifelse's /'switch'? :) – tower120
jsfiddle中使用的緩衝區操作符接受一個返回可觀察值的函數。 rxcpp不支持這種形式的緩衝區操作符。 –
我相信if/else是不可能的,因爲每個塊都是獨立的函數。 –