Giter VIP home page Giter VIP logo

Comments (7)

kzaher avatar kzaher commented on May 22, 2024 2

@iandundas I think you can also use combineLatest

combineLatest(ifSequence, thenSequence, elseSequence) { condition, thenElement, elseElement in
       if (condition) {
            return thenElement 
      }
      else {
            return elseElement
      }
}

If you really really need if:then:else, then you can just create your own operator that wraps combineLatest.

In that way you an create if:then:elseif:elseif ....:else or what ever imperative operator do you need applied easily :)

Hope this helps.

from rxswift.

danielt1263 avatar danielt1263 commented on May 22, 2024

If I understand you correctly then something like what I have on line 57 of this file should do it: https://github.com/dtartaglia/MVVMSwiftSample/blob/feature/make_reactive/MVVM/DetailViewController.swift

In short I think sampleLatest sounds like what you need. You might have to combine the parameter of sampleLatest with a filter.

from rxswift.

iandundas avatar iandundas commented on May 22, 2024

problem magically rearranges in head, combineLatest solution condenses into view
... okay that actually could work! Thanks both, I'll post back if still stuck. 👍🏻

from rxswift.

iandundas avatar iandundas commented on May 22, 2024

So, (if signal A's events are allowed through only if signal B evaluates to true, described above), what would you return if you didn't want anything to be passed to subscribers of combineLatest? i.e. I'm looking for an empty signal that just gets dropped, somehow.

i.e.:

let automaticUpdatesShouldBeEnabled: Observable<Bool>
let annotations: Observable<[PointAnnotation]>

combineLatest(automaticUpdatesShouldBeEnabled, annotations, {
    enabled, annotations in

    if enabled{ // cool, let the annotations through
        return annotations 
    }
    else{ // we want to stop here, and subscribers should receive nothing.
        // return ?? 
    }

})

from rxswift.

iandundas avatar iandundas commented on May 22, 2024

I guess one way would be to just make annotations an optional (Observable<[PointAnnotation]?>) and then just return nil - and then add a filter afterwards to filter these out.

But is there a better way?

from rxswift.

kzaher avatar kzaher commented on May 22, 2024

Hi @iandundas

I think what you need is a combo of combineLatest and flatMap. Something like:

let automaticUpdatesShouldBeEnabled: Observable<Bool>
let annotations: Observable<[PointAnnotation]>

combineLatest(automaticUpdatesShouldBeEnabled, annotations, { ($0, $1) })
    >- flatMap { enabled, annotations in
         if enabled{ // cool, let the annotations through
            return just(annotations) 
        }
        else{ // we want to stop here, and subscribers should receive nothing.
            return empty()
        }
     }

from rxswift.

iandundas avatar iandundas commented on May 22, 2024

That's perfect for what I need - thanks so much :)

from rxswift.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.