robbie
robbie

Reputation: 1319

What is the difference between async generators and Observables?

Async generators: An example case is a readable stream

Observables: A fundamental protocol for processing asynchronous streams of data

These both seem like different ways of tackling the same problem of an asynchronous stream of data. Is there a practical difference between the two, besides a matter of taste?

Upvotes: 6

Views: 1170

Answers (2)

Samuel Nwaokoro
Samuel Nwaokoro

Reputation: 144

I believe the answer could be found in their definition. A Generator function has the ability to stop and then continue later. An Observable can also stop and continue later but you need to subscribe to it first for it to begin.

First Difference - A generator executes when that function is called. An Observable technically only begins to execute or emit values when you subscribe to it.

Upvotes: 0

Bergi
Bergi

Reputation: 664764

Judging from the proposed API descriptions:

  • observables can have multiple subscribers (broadcast), asynchronous iterators can only have a single reader (unicast)
  • observables push the events, while asynchronous iterators need to be polled
  • admittedly, the lazy nature of the Observable constructor does blur the lines

Observables are basically event emitters, while asynchronous iterators can be used to form a streaming flow. I also recommend the General Theory of Reactivity as a good read.

Upvotes: 14

Related Questions