Skip to content

Instantly share code, notes, and snippets.

@samoshkin
Created March 1, 2020 18:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samoshkin/0a3c5b6da48715fe43a77bb871112a58 to your computer and use it in GitHub Desktop.
Save samoshkin/0a3c5b6da48715fe43a77bb871112a58 to your computer and use it in GitHub Desktop.
Create Observable from async generator
this.obs = createFrom(async function *() {
await delay(1000);
yield 1;
yield 2;
await delay(500);
await delay(300);
yield 3;
await delay(400);
yield 4;
yield 5;
await delay(1000);
yield 6;
return;
});
function createFrom<T>(asyncCollection: () => AsyncIterableIterator<T>): Observable<T> {
return new Observable<T>(subscriber => {
(async () => {
try {
for await (const value of asyncCollection()) {
subscriber.next(value);
}
subscriber.complete();
} catch (err) {
subscriber.error(err);
}
})();
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment