callbag-exhaust-map

1.2.0 • Public • Published

callbag-exhaust-map

Callbag operator that maps to inner source and ignores other values until that source completes.

Example

import debounce from 'callbag-debounce'
import exhaustMap from 'callbag-exhaust-map'
import filter from 'callbag-filter'
import forEach from 'callbag-for-each'
import fromEvent from 'callbag-from-event'
import fromPromise from 'callbag-from-promise'
import map from 'callbag-map'
import pairwise from 'callbag-pairwise'
import pipe from 'callbag-pipe'
 
pipe(
  fromEvent(window, 'scroll'),
  map(({ target: { clientHeight, scrollHeight, scrollTop } }) => ({
    clientHeight,
    scrollHeight,
    scrollTop,
  })),
  pairwise,
  debounce(200),
  filter(([prev, current]) => {
    const scrollingDown = prev.scrollTop < current.scrollTop
    const nearBottom =
      (current.scrollTop + current.clientHeight) / current.scrollHeight > 0.9
    return scrollingDown && nearBottom
  }),
  exhaustMap(() => fromPromise(fetchItems())),
  forEach(items => {
    console.log(items)
  }),
)

Readme

Keywords

Package Sidebar

Install

npm i callbag-exhaust-map

Weekly Downloads

37

Version

1.2.0

License

MIT

Unpacked Size

5.02 kB

Total Files

4

Last publish

Collaborators

  • andarist