1.2.0 • Published 6 years ago

callbag-exhaust-map v1.2.0

Weekly downloads
105
License
MIT
Repository
github
Last release
6 years ago

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)
  }),
)
1.2.0

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago