| Technology |
Push |
Pull |
LHS |
RHS |
Function name |
AsyncIterable |
|
Yes |
Yes |
Yes |
values() |
Observable |
Yes |
|
Yes |
Yes |
[Symbol.observable]() |
EventTarget |
Yes |
|
Yes |
Yes |
addEventListener() |
ReadableStream |
Yes |
Yes |
Not useful |
Yes |
readable |
Reader |
|
Yes |
Yes |
Not useful |
getReader() |
WritableStream |
Yes |
|
Yes |
Not useful |
pipeTo() |
Writer |
Yes |
|
No |
Not useful |
getWriter() |
MessagePort |
Yes |
|
|
|
|
Push-based to pull-based is not recommended as it requires internal buffering and impossible to implement flow control.
Total 18 combinations.
Done
Roadmap
Under investigation
AsyncIterablevalues()Observable[Symbol.observable]()EventTargetYesYesYesaddEventListener()ReadableStreamreadableReadergetReader()WritableStreampipeTo()WritergetWriter()MessagePortPush-based to pull-based is not recommended as it requires internal buffering and impossible to implement flow control.
Total 18 combinations.Done
AsyncIterabletoObservable(AddobservableFromAsync#9)ReadertoAsyncIterable(AddreaderToAsyncIterableIterator#12 and Clean up #14)ObservabletoReadableStream/Reader(AddobservableSubscribeAsReadable#13)AsyncIterable/IterabletoReadableStream(AdditerableGetReadable#15)Roadmap
iterableGetReadbletoreadableStreamFromPushAsyncIterableIteratortoIterableWritableStreamMessagePortto/fromReadableStream/WritableStreamUnder investigation
Achievable throughObservableandWritableStream/Writer(Observable.pipeTo())Observable.subscribeAsReadable().pipeTo()