Async Iterable EventEmitter.on(emitter, "event")
#27847
Closed
Description
Continuing the discussion from the once
PR. Regarding the discussion of EventEmitter.on(emitter, "eventName")
events.on(emitter, name)
- emitter <
EventEmitter
> - name <
string
> - Returns: <
AsyncIterable
>
Creates an AsyncIterable
that yields promises for the values of the given event name
in the given EventEmitter. The iterable rejects the next promise when the EventEmitter emits 'error'. Calling .return
on the iterable removes the subscription which means the iterable unsubscribes automatically when a for await
loop is broken or returned from.
Here is an example of the API:
const events = on(emitter, "item");
events.next(); // Promise for the next event value
events.return(); // unsubscribe
events.throw(); // not sure what we want this to do, we might want to emit `error` on
Or with for await
syntax:
const foos = on(emitter, 'foo');
for await (const foo of foos) {
foo; // the next value from the emitter
break; // this calls `.return` on the async iterable and unsubscribes.
}