Представьте У меня есть два сигнала: дешевый и дорогой: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. –
Только что нашел проблему. См. Мой ответ ниже. Я толстый, так как локальный сигнал работает в том же потоке, на котором он подписан, возьмите: 1 даже не имеет шанса уничтожить всю последовательность. – Slabko