pull-from-observable

Allows reading events from an observable in a pull-based manner.

Usage no npm install needed!

<script type="module">
  import pullFromObservable from 'https://cdn.skypack.dev/pull-from-observable';
</script>

README

Build Status

pull-from-observable

Allows you get events from an observable in a pull-based manner.

Observables are push based, they keep pushing events to you. If you need to do some async work before you can handle the next event, you are pretty much out of luck. There are some solutions to apply buffering, but in the end, the observable source controls the data flow.

Pull from observable buffers the incoming values for you, and allows you to run next() when you are ready to process the next value. If there are no values, they will be provided when available.

Installation

With npm:

npm install pull-from-observable

With yarn:

yarn add pull-from-observable

Usage

Example with Rx observables:

const Rx = require('rxjs')
const pull = require('pull-from-observable')

const observable = Rx.Observable.interval(100).take(5) // Push values every 100ms, 5 times

pull(observable, (next, value) => {
  setTimeout(() => { // Do some async work that takes longer than the interval
    console.log(value)
    next() // Ready to pull next value
  }, 200)
})

// Output:
//
// 0
// 1
// 2
// 3
// 4