Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

most-replay

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

most-replay

A memoization operator for most.js

  • 1.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
Maintainers
1
Weekly downloads
 
Created
Source

most-replay: memoization for most.js

This is a specialization of most.js' multicast operator. As with multicast, a single source is maintained, and the same data is emitted to multiple observers. Unlike multicast, all events are cached internally and transmitted to new observers before they receive subsequent events from the source. When the source terminates, the termination event is also recorded. New observers that connect after the original source terminates will be transmitted all of the cached events, followed by the same end or error event that the original source terminated with.

Note: this module makes use of ES2015 syntax such as let, const and arrow functions. Use Babel or an equivalent transpiler if your distribution target does not support these. np

Installation

npm install --save most
npm install --save most-replay

Example Usage

var most = require('most');
require('most-replay'); // Call only once, at the start of your application.

var memoizedStream = most
  .periodic(100, null)
  .flatMap(x => most.just(Math.random()))
  .take(5)
  .replay();

function observe(tag) {
  return () => {
    memoizedStream
      .reduce((acc, x) => {
        console.log(tag, x);
        return acc.concat(x);
      }, [])
      .then(arr => console.log(tag, arr))
      .catch(err => console.error(err));
  };
}

observe('A')();
setTimeout(observe('B'), 250);
setTimeout(observe('C'), 1000);

Output

A 0.26321787014603615
A 0.9947695874143392
A 0.7076342459768057
B 0.26321787014603615
B 0.9947695874143392
B 0.7076342459768057
A 0.776626710081473
B 0.776626710081473
A 0.7720444065053016
B 0.7720444065053016
A [0.26321787014603615, 0.9947695874143392, 0.7076342459768057, 0.776626710081473, 0.7720444065053016]
B [0.26321787014603615, 0.9947695874143392, 0.7076342459768057, 0.776626710081473, 0.7720444065053016]
C 0.26321787014603615
C 0.9947695874143392
C 0.7076342459768057
C 0.776626710081473
C 0.7720444065053016
C [0.26321787014603615, 0.9947695874143392, 0.7076342459768057, 0.776626710081473, 0.7720444065053016]

Keywords

FAQs

Package last updated on 26 Jan 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc