Skip to content

Instantly share code, notes, and snippets.

@byteshiva
Created July 4, 2018 04:44
Show Gist options
  • Save byteshiva/12d912fd4488e080d7c94db637cfba66 to your computer and use it in GitHub Desktop.
Save byteshiva/12d912fd4488e080d7c94db637cfba66 to your computer and use it in GitHub Desktop.
bufferCount // source https://jsbin.com/kasideg
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>bufferCount</title>
<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.umd.js"></script>
</head>
<body>
<script id="jsbin-javascript">
"use strict";
//emit every 1s, take 2
var source = Rx.Observable.interval(1000).take(1);
//map each emitted value from source to interval observable that takes 5 values
var example = source.map(function (val) { return Rx.Observable.interval(1000).map(function (i) { return ("Result (" + val + "): " + i); }).take(5); });
/*
2 values from source will map to 2 (inner) interval observables that emit every 1s
combineAll uses combineLatest strategy, emitting the last value from each
whenever either observable emits a value
*/
var combined = example.combineAll();
/*
output:
["Result (0): 0", "Result (1): 0"]
["Result (0): 1", "Result (1): 0"]
["Result (0): 1", "Result (1): 1"]
["Result (0): 2", "Result (1): 1"]
["Result (0): 2", "Result (1): 2"]
["Result (0): 3", "Result (1): 2"]
["Result (0): 3", "Result (1): 3"]
["Result (0): 4", "Result (1): 3"]
["Result (0): 4", "Result (1): 4"]
*/
var subscribe = combined.subscribe(function (val) { return console.log(val); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUJBQXVCO0FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCwrRUFBK0U7QUFDL0UsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGNBQVcsR0FBRyxXQUFNLENBQUMsQ0FBRSxFQUF2QixDQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUF0RSxDQUFzRSxDQUFDLENBQUM7QUFDMUc7Ozs7RUFJRTtBQUNGLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN0Qzs7Ozs7Ozs7Ozs7RUFXRTtBQUNGLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFoQixDQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL2VtaXQgZXZlcnkgMXMsIHRha2UgMlxuY29uc3Qgc291cmNlID0gUnguT2JzZXJ2YWJsZS5pbnRlcnZhbCgxMDAwKS50YWtlKDEpO1xuLy9tYXAgZWFjaCBlbWl0dGVkIHZhbHVlIGZyb20gc291cmNlIHRvIGludGVydmFsIG9ic2VydmFibGUgdGhhdCB0YWtlcyA1IHZhbHVlc1xuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5tYXAodmFsID0+IFJ4Lk9ic2VydmFibGUuaW50ZXJ2YWwoMTAwMCkubWFwKGkgPT4gYFJlc3VsdCAoJHt2YWx9KTogJHtpfWApLnRha2UoNSkpO1xuLypcbiAgMiB2YWx1ZXMgZnJvbSBzb3VyY2Ugd2lsbCBtYXAgdG8gMiAoaW5uZXIpIGludGVydmFsIG9ic2VydmFibGVzIHRoYXQgZW1pdCBldmVyeSAxc1xuICBjb21iaW5lQWxsIHVzZXMgY29tYmluZUxhdGVzdCBzdHJhdGVneSwgZW1pdHRpbmcgdGhlIGxhc3QgdmFsdWUgZnJvbSBlYWNoXG4gIHdoZW5ldmVyIGVpdGhlciBvYnNlcnZhYmxlIGVtaXRzIGEgdmFsdWVcbiovXG5jb25zdCBjb21iaW5lZCA9IGV4YW1wbGUuY29tYmluZUFsbCgpO1xuLypcbiAgb3V0cHV0OlxuICBbXCJSZXN1bHQgKDApOiAwXCIsIFwiUmVzdWx0ICgxKTogMFwiXVxuICBbXCJSZXN1bHQgKDApOiAxXCIsIFwiUmVzdWx0ICgxKTogMFwiXVxuICBbXCJSZXN1bHQgKDApOiAxXCIsIFwiUmVzdWx0ICgxKTogMVwiXVxuICBbXCJSZXN1bHQgKDApOiAyXCIsIFwiUmVzdWx0ICgxKTogMVwiXVxuICBbXCJSZXN1bHQgKDApOiAyXCIsIFwiUmVzdWx0ICgxKTogMlwiXVxuICBbXCJSZXN1bHQgKDApOiAzXCIsIFwiUmVzdWx0ICgxKTogMlwiXVxuICBbXCJSZXN1bHQgKDApOiAzXCIsIFwiUmVzdWx0ICgxKTogM1wiXVxuICBbXCJSZXN1bHQgKDApOiA0XCIsIFwiUmVzdWx0ICgxKTogM1wiXVxuICBbXCJSZXN1bHQgKDApOiA0XCIsIFwiUmVzdWx0ICgxKTogNFwiXVxuKi9cbmNvbnN0IHN1YnNjcmliZSA9IGNvbWJpbmVkLnN1YnNjcmliZSh2YWwgPT4gY29uc29sZS5sb2codmFsKSk7Il19
</script>
<script id="jsbin-source-javascript" type="text/javascript">//emit every 1s, take 2
const source = Rx.Observable.interval(1000).take(1);
//map each emitted value from source to interval observable that takes 5 values
const example = source.map(val => Rx.Observable.interval(1000).map(i => `Result (${val}): ${i}`).take(5));
/*
2 values from source will map to 2 (inner) interval observables that emit every 1s
combineAll uses combineLatest strategy, emitting the last value from each
whenever either observable emits a value
*/
const combined = example.combineAll();
/*
output:
["Result (0): 0", "Result (1): 0"]
["Result (0): 1", "Result (1): 0"]
["Result (0): 1", "Result (1): 1"]
["Result (0): 2", "Result (1): 1"]
["Result (0): 2", "Result (1): 2"]
["Result (0): 3", "Result (1): 2"]
["Result (0): 3", "Result (1): 3"]
["Result (0): 4", "Result (1): 3"]
["Result (0): 4", "Result (1): 4"]
*/
const subscribe = combined.subscribe(val => console.log(val));</script></body>
</html>
"use strict";
//emit every 1s, take 2
var source = Rx.Observable.interval(1000).take(1);
//map each emitted value from source to interval observable that takes 5 values
var example = source.map(function (val) { return Rx.Observable.interval(1000).map(function (i) { return ("Result (" + val + "): " + i); }).take(5); });
/*
2 values from source will map to 2 (inner) interval observables that emit every 1s
combineAll uses combineLatest strategy, emitting the last value from each
whenever either observable emits a value
*/
var combined = example.combineAll();
/*
output:
["Result (0): 0", "Result (1): 0"]
["Result (0): 1", "Result (1): 0"]
["Result (0): 1", "Result (1): 1"]
["Result (0): 2", "Result (1): 1"]
["Result (0): 2", "Result (1): 2"]
["Result (0): 3", "Result (1): 2"]
["Result (0): 3", "Result (1): 3"]
["Result (0): 4", "Result (1): 3"]
["Result (0): 4", "Result (1): 4"]
*/
var subscribe = combined.subscribe(function (val) { return console.log(val); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUJBQXVCO0FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCwrRUFBK0U7QUFDL0UsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGNBQVcsR0FBRyxXQUFNLENBQUMsQ0FBRSxFQUF2QixDQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUF0RSxDQUFzRSxDQUFDLENBQUM7QUFDMUc7Ozs7RUFJRTtBQUNGLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN0Qzs7Ozs7Ozs7Ozs7RUFXRTtBQUNGLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFoQixDQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL2VtaXQgZXZlcnkgMXMsIHRha2UgMlxuY29uc3Qgc291cmNlID0gUnguT2JzZXJ2YWJsZS5pbnRlcnZhbCgxMDAwKS50YWtlKDEpO1xuLy9tYXAgZWFjaCBlbWl0dGVkIHZhbHVlIGZyb20gc291cmNlIHRvIGludGVydmFsIG9ic2VydmFibGUgdGhhdCB0YWtlcyA1IHZhbHVlc1xuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5tYXAodmFsID0+IFJ4Lk9ic2VydmFibGUuaW50ZXJ2YWwoMTAwMCkubWFwKGkgPT4gYFJlc3VsdCAoJHt2YWx9KTogJHtpfWApLnRha2UoNSkpO1xuLypcbiAgMiB2YWx1ZXMgZnJvbSBzb3VyY2Ugd2lsbCBtYXAgdG8gMiAoaW5uZXIpIGludGVydmFsIG9ic2VydmFibGVzIHRoYXQgZW1pdCBldmVyeSAxc1xuICBjb21iaW5lQWxsIHVzZXMgY29tYmluZUxhdGVzdCBzdHJhdGVneSwgZW1pdHRpbmcgdGhlIGxhc3QgdmFsdWUgZnJvbSBlYWNoXG4gIHdoZW5ldmVyIGVpdGhlciBvYnNlcnZhYmxlIGVtaXRzIGEgdmFsdWVcbiovXG5jb25zdCBjb21iaW5lZCA9IGV4YW1wbGUuY29tYmluZUFsbCgpO1xuLypcbiAgb3V0cHV0OlxuICBbXCJSZXN1bHQgKDApOiAwXCIsIFwiUmVzdWx0ICgxKTogMFwiXVxuICBbXCJSZXN1bHQgKDApOiAxXCIsIFwiUmVzdWx0ICgxKTogMFwiXVxuICBbXCJSZXN1bHQgKDApOiAxXCIsIFwiUmVzdWx0ICgxKTogMVwiXVxuICBbXCJSZXN1bHQgKDApOiAyXCIsIFwiUmVzdWx0ICgxKTogMVwiXVxuICBbXCJSZXN1bHQgKDApOiAyXCIsIFwiUmVzdWx0ICgxKTogMlwiXVxuICBbXCJSZXN1bHQgKDApOiAzXCIsIFwiUmVzdWx0ICgxKTogMlwiXVxuICBbXCJSZXN1bHQgKDApOiAzXCIsIFwiUmVzdWx0ICgxKTogM1wiXVxuICBbXCJSZXN1bHQgKDApOiA0XCIsIFwiUmVzdWx0ICgxKTogM1wiXVxuICBbXCJSZXN1bHQgKDApOiA0XCIsIFwiUmVzdWx0ICgxKTogNFwiXVxuKi9cbmNvbnN0IHN1YnNjcmliZSA9IGNvbWJpbmVkLnN1YnNjcmliZSh2YWwgPT4gY29uc29sZS5sb2codmFsKSk7Il19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment