想象我有兩個信號:一個便宜和昂貴的:ReactiveCocoa - 訂閱第二信號,如果第一個沒有任何價值,完成
RACSignal *localSignal; // Cheap signal. Sends object without network request
// if possible, otherwise completes immediately.
RACSingal *networkSignal; // Expensive one. Always sends data,
// but requires expensive network operation.
現在我想創建一個信號,它發送的值從第一個信號(如果有的話)或訂閱第二個信號並從該信號發送數據。
下面的解決方案几乎給我我想要的,但它總是訂閱第二個昂貴的信號,即使從第一個信號獲取值,並忽略第二個信號的值。
[[localDataSignal concat:networkDataSignal] take:1];
有沒有辦法有效解決問題?
我覺得這不應該訂閱昂貴的信號,而且這是一個處置錯誤。可能想要就RAC的項目提交一個問題。 – 2015-02-11 15:53:53
剛剛發現問題。看到我的答案吼叫。我很厚,因爲本地信號在它所訂閱的同一個線程中工作,取:1甚至沒有機會處理整個序列。 – Slabko 2015-02-12 12:22:03