/**
- callbag-for-each
-
- Callbag sink that consume both pullable and listenable sources. When called
- on a pullable source, it will iterate through its data. When called on a
- listenable source, it will observe its data.
npm install callbag-for-each
- Examples
-
- Consume a pullable source:
-
const fromIter = require('callbag-from-iter');
-
const forEach = require('callbag-for-each');
-
const source = fromIter([10,20,30,40])
-
forEach(x => console.log(x))(source); // 10
-
// 20
-
// 30
-
// 40
- Consume a listenable source:
-
const interval = require('callbag-interval');
-
const forEach = require('callbag-for-each');
-
const source = interval(1000);
-
forEach(x => console.log(x))(source); // 0
-
// 1
-
// 2
-
// 3
-
// ...
*/
const forEach = operation => source => {
let talkback;
source(0, (t, d) => {
if (t === 0) talkback = d;
if (t === 1) operation(d);
if (t === 1 || t === 0) talkback(1);
});
};
module.exports = forEach;