How does Observables (Rx.js) compare to ES2015 generators? : <p>As far as I understand, following are the techniques to solve asynchronous programming workflows:</p>

<ol>
<li>Callbacks (CSP)</li>
<li>Promises</li>
</ol>

<p>Newer approaches:</p>

<ol>
<li>Rx.js Observables (or mostjs, bacon.js, xstream etc)</li>
<li>ES6 generators</li>
<li>Async/Await</li>
</ol>

<p>We are now moving away from callbacks &amp; promises to these newer approaches. What I understand currently is - Async/Await is more like a cleaner abstraction on top of ES2015 generators.</p>

<p><strong>What I am not able to understand is the conceptual difference between Observables and Generators.</strong> I have used both extensively and have no trouble in using them.</p>

<p>What confuses me is the use case for Observables and Generators. I have come to conclusion that, in the end, they are addressing the same problem - asynchronicity. Only potential difference I see is generators inherently provide imperative semantics to code while Observables using Rxjs seem to provide reactive paradigm. But is that it?</p>

<p>Should that be the criteria to choose between Observable and Generator? What are the pros and cons.</p>

<p><strong>Am I missing the big picture?</strong></p>

<p>Also with Observable eventually making into future Ecmascript, are Promises (with cancelable-token)/Observable/Generators going to compete with each other?</p>
