callbag-exhaust-map
v1.2.0
Published
👜 Callbag operator that maps to inner source and ignores other values until that source completes.
Downloads
228
Readme
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)
}),
)