title: Synchronising combined Properties in ReactiveSwift
body: <p>I'm considering converting a project using my own custom signal framework to use ReactiveSwift instead, but there is a fundamental issue I've never figured out how to resolve in ReactiveSwift:</p>
  
  <p>As a simplified example, let's say you have two mutable properties:</p>
  
  <pre><code>let a = MutableProperty&lt;Int&gt;(1)
  let b = MutableProperty&lt;Int&gt;(2)
  </code></pre>
  
  <p>Then, we derive a property that combines both to implement our logic:</p>
  
  <pre><code>let c = Property.combineLatest(a, b).map { a, b in
      return a + b
  }
  </code></pre>
  
  <p>Later, we receive some information that causes us to update the values of both <code>a</code> and <code>b</code> at the same time:</p>
  
  <pre><code>a.value = 3
  b.value = 4
  </code></pre>
  
  <p>The problem now is that <code>c</code> will inform its listeners that it has the values <code>3 -&gt; 5 -&gt; 7</code>. The 5 is entirely spurious and does not represent a valid state, as we never wanted a state where <code>a</code> was equal to 3 and <code>b</code> was equal to 2.</p>
  
  <p>Is there a way around this? A way to suppress updates to a <code>Property</code> while updating all of its dependencies to new states, and only letting an update through once you are done?</p>