2014-04-01 90 views
1

給定兩個Bacon.Bus es我需要結合它們各自的值。然而,第二輛公共汽車的生產率要高得多(大約爲1:200),第一輛公共汽車也比較慢,而且第一輛公交車的價值也被嚴重拖延了。通過XHR或類似的東西取得。因此,第一輛公交車的第一個價值是在第一批「批」已經通過第二輛公交車之後發出的。因此Bacon.onValues(bus1, bus2, f(b1, b2))不起作用,因爲相同的原因,bus1.sampledBy(b2, f(b1, b2))也不起作用。如何延遲Bacon.js流直到另一個流上的值?

我想我需要一種方法來緩衝我的第二條總線,並在第一條總線發出一個值後立即釋放它。可能我需要在issue #300中提到的可流式流,但也許我錯過了一些非常明顯的東西。

那麼如何延遲第二條總線,直到第一條值出現爲止?

+0

你在找什麼樣的語義?郵編也許?這將結合第一個A與第一個B,第二個A與第二個B等。 – raimohanska

+0

嗯。 (a [0],b [0]),(a [0],b [1]),(a [0],b [2]),...,直到出現a [1] ,然後'(a [1],b [n]),(a [1],b [n + 1]),...'等等。它實際上是一個簡單的'combineAsArray',但似乎我不能(a [0],b [50]),(a [1],b [51]),...' –

+0

@ Phae7rae:我不知道這是不是很奇怪,但似乎你已經給出了答案,然後刪除它。這是一個錯誤嗎?感謝您的意見! –

回答

0

combineAsArray()似乎做的工作就好了

檢查這個演示:

http://codepen.io/turbohz/pen/jFxqw

+0

不,它沒有,但感謝這個例子 - 我修改了它來顯示問題。查看http://codepen.io/anon/pen/urfJs - 由於第二個流比第一個流晚5秒開始,因此'combineAsArray'會忽略來自第一個流的所有事件,以便輸出計數器從「 5:0" 。 –

+1

我在合併之前將流轉換爲屬性,然後它看起來像預期的那樣工作:http://codepen.io/anon/pen/eBita – TurboHz

+0

我再次破壞了它:http://codepen.io/anon/ pen/IwApr - 我已經刪除了初始屬性值,因爲情況正是如此(例如AJAX請求)。 –

相關問題