@most/sample

@most/sample

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
72Sep 22, 2017Apr 2, 2016Minified + gzip package size for @most/sample in KB

Readme

@most/sample

Create a new stream by combining sampled values from many input streams.

Install

npm install @most/sample

API

sample :: (a → b → c) → Stream a → Stream b → Stream c

stream:                          -2--3-4--2--5--6---7---1->
sampler:                         ---1----2----3-------5--->
sample(sum, sampler, stream):    ---3----6----8-------12-->

sample produces a value only when an event arrives on the sampler, passing the value of the sampler along with the latest value from stream.

sample is curried by default.

import {periodic, of} from 'most';
import {sample} from '@most/sample';

const add = (x, y) => x + y;

const sampleWithArray = sample(Array);
const sampleEachSecond = sampleWithArray(periodic(1000, 1).scan(add, 0));

sampleEachSecond(of(2))
  .take(3)
  .observe(([sec, val]) => {
    console.log('Seconds Passed: ' + sec);
    console.log(sec * value);
  });
// Seconds Passed: 0
// 0
// Seconds Passed: 1
// 2
// Seconds Passed: 2
// 4

sampleArray :: (a → [b] → c) → Stream a → [Stream b] → Stream c

s1:                             -2--3-4--2--5--6---7---1->
s2:                             -1--2---3----------4----->
sampler:                        ---1----2----3-------5--->
sample(sum, sampler, [s1, s2]): ---4----9----11-------16-->

sampleArray produces a value only when an event arrives on the sampler, passing the value of the sampler along with an array of latest values from streams contained in arrayOfStreams.

sampleArray is curried by default.

import {periodic, of} from 'most';
import {sampleArray} from '@most/sample';

const add = (x, y) => x + y;

const sampleWithArray = sampleArray(Array);
const sampleEachSecond = sampleWithArray(periodic(1000, 1).scan(add, 0));

sampleEachSecond([of(1), of(2)])
  .take(3)
  .observe(([sec, [s1, s2]]) => {
    console.log('Seconds Passed: ' + sec);
    console.log(s1 * sec, s2 * sec);
  });
// Seconds Passed: 0
// 0, 0
// Seconds Passed: 1
// 1, 2
// Seconds Passed: 2
// 2, 4

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.