Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/franciscotln/callbag-create
Creates a new Callbag given an optional producer
https://github.com/franciscotln/callbag-create
Last synced: 3 months ago
JSON representation
Creates a new Callbag given an optional producer
- Host: GitHub
- URL: https://github.com/franciscotln/callbag-create
- Owner: franciscotln
- License: mit
- Created: 2018-03-25T17:08:35.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-27T13:05:56.000Z (4 months ago)
- Last Synced: 2024-10-13T14:45:19.354Z (3 months ago)
- Language: JavaScript
- Size: 52.7 KB
- Stars: 8
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
- awesome-callbags - create
README
# callbag-create
Creates a new Callbag given an optional producer that dictates how to emit values and complete the Callbag.
`npm install callbag-create`
## Examples
### With a Producer
```js
const create = require('callbag-create');
const forEach = require('callbag-for-each');
const pipe = require('callbag-pipe');pipe(
create((next, error, done) => {
next('a');
next('b');
done();
next('c');
}),
forEach((v) => {
console.log(v);
})
);
// logs 'a', 'b', then completes.
// Calling next('c') does nothing since done() was called and terminated the callbag
```### With a Producer returning a clean-up logic
```js
const create = require('callbag-create');
const forEach = require('callbag-for-each');
const pipe = require('callbag-pipe');const unsubscribe = pipe(
create((next, error, done) => {
const id = setTimeout(() => {
next('a');
done();
}, 1000);return () => {
clearTimeout(id);
};
}),
subscribe({
next(v) {
console.log(v);
},
complete() {
console.log('Done()');
}
})
);unsubscribe();
// logs nothing since it was unsubscribed before emitting and the timeout is cleared
```### With a Noop Producer
Equivalent to xstream and RxJs never().
Never emits the completion message.```js
const create = require('callbag-create');
const forEach = require('callbag-for-each');
const pipe = require('callbag-pipe');pipe(
create(() => {}),
forEach((v) => {
console.log(v); // void
})
);
```### Without a Producer
Equivalent to xstream and RxJs empty().
Emits no value and immediatelly emits the completion message.```js
const create = require('callbag-create');
const subscribe = require('callbag-subscribe');
const pipe = require('callbag-pipe');pipe(
create(),
subscribe({
next(v) {
console.log(v);
},
complete() {
console.log('Done()');
}
}) // => Done()
);
```