Skip to content

Instantly share code, notes, and snippets.

@bholloway
Forked from anonymous/index.html
Created December 4, 2015 11:11
Show Gist options
  • Save bholloway/89c2584e127afb7012d5 to your computer and use it in GitHub Desktop.
Save bholloway/89c2584e127afb7012d5 to your computer and use it in GitHub Desktop.
rxjs delayed subscriber with default rxjs delayed subscriber with default // source https://jsbin.com/panela
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="rxjs delayed subscriber with default">
<meta charset="utf-8">
<title>rxjs delayed subscriber with default</title>
</script>
<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.js"></script>
</head>
<body>
<ui-view></ui-view>
<script id="jsbin-javascript">
'use strict';
console.clear();
var start = Date.now();
var observable = Rx.Observable.interval(250).take(4).map(function (x) {
console.log((Date.now() - start) / 1000);
console.log('set current: ' + x);
current = x;
return x;
}).publish().refCount();
var current;
setTimeout(add.bind(null, 'a', 0), 500);
setTimeout(add.bind(null, 'b', 260), 750);
function add(label, delay) {
var derrived = Rx.Observable.merge(Rx.Observable.create(function (observer) {
console.log((Date.now() - start) / 1000);
console.log('BEGIN ' + label);
if (current) {
observer.next(current);
}
observer.complete();
}), observable);
setTimeout(function () {
return derrived.subscribe(log(label));
}, delay);
}
function log(label) {
return function (value) {
return console.log(' ' + label + ':' + value);
};
}
</script>
<script id="jsbin-source-javascript" type="text/javascript">console.clear();
var start = Date.now();
var observable = Rx.Observable.interval(250).take(4)
.map((x) => {
console.log((Date.now() - start) / 1000);
console.log('set current: ' + x);
current = x;
return x;
})
.publish()
.refCount();
var current;
setTimeout(add.bind(null, 'a', 0), 500);
setTimeout(add.bind(null, 'b', 260), 750);
function add(label, delay) {
var derrived = Rx.Observable.merge(
Rx.Observable.create((observer) => {
console.log((Date.now() - start) / 1000);
console.log('BEGIN ' + label)
if (current) {
observer.next(current);
}
observer.complete();
}),
observable
);
setTimeout(() => derrived.subscribe(log(label)), delay);
}
function log(label) {
return (value) => console.log(' ' + label + ':' + value);
}</script></body>
</html>
'use strict';
console.clear();
var start = Date.now();
var observable = Rx.Observable.interval(250).take(4).map(function (x) {
console.log((Date.now() - start) / 1000);
console.log('set current: ' + x);
current = x;
return x;
}).publish().refCount();
var current;
setTimeout(add.bind(null, 'a', 0), 500);
setTimeout(add.bind(null, 'b', 260), 750);
function add(label, delay) {
var derrived = Rx.Observable.merge(Rx.Observable.create(function (observer) {
console.log((Date.now() - start) / 1000);
console.log('BEGIN ' + label);
if (current) {
observer.next(current);
}
observer.complete();
}), observable);
setTimeout(function () {
return derrived.subscribe(log(label));
}, delay);
}
function log(label) {
return function (value) {
return console.log(' ' + label + ':' + value);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment