Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/staltz/callbag-pausable-interval

👜 Like callbag-interval, but can be paused and resumed upon pulling
https://github.com/staltz/callbag-pausable-interval

Last synced: 28 days ago
JSON representation

👜 Like callbag-interval, but can be paused and resumed upon pulling

Awesome Lists containing this project

README

        

# callbag-pausable-interval

A callbag listenable source that sends incremental numbers every x milliseconds, but can be paused (and resumed) when it is pulled by a sink.

This is a hybrid source, it is both listenable and pullable. Don't use `forEach` directly as the sink for this source, because `forEach` pulls every time it receives data. You can use this source as the argument for `sample`, though.

`npm install callbag-pausable-interval`

## example

```js
const pausableInterval = require('callbag-pausable-interval')

const source = pausableInterval(600)

source(0, (type, data) => {
if (type === 0) {
const talkback = data
// Every 2 seconds, send a message "null" back to the source
setInterval(() => talkback(1, null), 2000)
}
if (type === 1) console.log(data)
})
// 0
// 1
// 2
// ...pauses and waits...
// 3
// 4
// 5
// ...pauses and waits...
// 6
// 7
// 8
// ...
```