Я использую RxSwift для кэширования в моем приложении IOS и иметь кусок кода, как это:ReactiveX RxSwift получить первую не ошибку от CONCAT наблюдаемых
let observable = Observable.of(cache.getItem(itemID), network.getItem(itemID)).concat().take(1)
observable.subscribeNext // and do some stuff
У меня есть cache.getItem
метод делает в onError
, если он имеет нет значения, и хотелось бы, чтобы он затем отложил работу в сети, но по какой-то причине сеть никогда не запускается. Я предполагаю, потому что я использую take (1), но я хотел бы, чтобы наблюдаемое прекратило излучать, как только кеш найдет что-то (или продолжит работу в сети, если это не так).
Любые идеи о том, как это сделать?
Я слежу за руководством this, но он не разбирается в поведении своего кэша, когда ему не удается найти что-то.
Отлично, спасибо чувак! Хорошее объяснение и отлично работает – Josh
Прямо сейчас, продолжайте веселиться с Rx! – solidcell