Skip to content

Latest commit

 

History

History
55 lines (40 loc) · 1.57 KB

File metadata and controls

55 lines (40 loc) · 1.57 KB

cache

####signature: cache(bufferSize: number, windowTime: number, scheduler : Scheduler): Observable

Description

TL;DR: Share source and deliver specified number of latest emitted values upon subscription

Description coming soon...

Examples

Example 1: Cache last value from source

( jsBin | jsFiddle )

//basic promise, resolve after 2 seconds
const myPromise = val => new Promise(resolve => setTimeout(() => resolve(`Result: ${val}`), 2000));
//emit after 1 second
const source = Rx.Observable.timer(1000);

const example = source
	//side effects triggered once
	.do(() => console.log('Triggering Side Effect!'))
	.mergeMap(myPromise)
//cache the last emission
const cached = example.cache(1);

/*
	both subscribers share the same source
  Triggering Side Effect!
	Result: 0
	Result: 0
*/
const subscriberOne = cached.subscribe(val => console.log(val));
const subscriberTwo = cached.subscribe(val => console.log(val));


setTimeout(() => {
	/*
  	late subscribers will receieve the last (1) emission
    output:
    Subscriber 3: Result: 0
  */
	const subscriberThree = cached.subscribe(val => console.log(`Subscriber 3: ${val}`));
}, 5000);

Additional Resources

  • cache 📰 - Official docs

📁 Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/operator/cache.ts