Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avinashcodes/callbag-switch-map
https://github.com/avinashcodes/callbag-switch-map
Last synced: 18 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/avinashcodes/callbag-switch-map
- Owner: avinashcodes
- License: mit
- Created: 2018-02-25T06:19:53.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-01-25T23:15:49.000Z (almost 4 years ago)
- Last Synced: 2024-09-17T05:39:17.817Z (about 2 months ago)
- Language: JavaScript
- Size: 12.7 KB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-callbags - switch-map
README
# callbag-switch-map 👜
A callbag operator that creates and switches to the new source whenever original source emits
`npm install callbag-switch-map`
## Usage:
Pullable Source
```js
const pipe = require('callbag-pipe');
const switchMap = require('callbag-switch-map');
const fromIter = require('callbag-from-iterable');
const forEach = require('callbag-for-each');console.log('Pullable source');
pipe(
fromIter('hi'),
switchMap(char => fromIter([10, 20, 30]), (char,num) => char + num),
forEach(x => console.log(x))
);// Pullable source
// h10
// i10
// i20
// i30
```Listenable Source
```js
const pipe = require('callbag-pipe');
const switchMap = require('callbag-switch-map');
const interval = require('callbag-interval');
const forEach = require('callbag-for-each');
const fromPromise = require('callbag-from-promise');const fakeAjax = value => new Promise((resolve, reject) => {
let period = value % 2 ? 400 : 1200; // Resolve odd numbers quickly
setTimeout(resolve, period, (value*value));
});console.log('Listenable source');
pipe(
interval(500),
switchMap(i => fromPromise(fakeAjax(i))),
forEach(x => console.log(x))
);// Listenable source
// 1
// 9
// 25
// 49
// 81
// 121
// ....
```