Mam taki przykład i trochę oczom nie wierzę:
var source = Rx.Observable.timer(0, 1000)
.map(function (x) { return x * 5; })
.map(function (x) {
console.log('SCANNED ' + x);
return x;
})
.take(5);
var subscription1 = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });
var subscription2 = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });
Przykład można odpalić tutaj
Czemu podpięcie dodatkowej subskrybcji rzutuje na wykonanie w ten sposób, że cała praca jak jest wykonana przez source
wykonuje się tyle razy ile jest subów? Ja myślałem, że source
wylicza swoje wyniki raz i że później po prostu ogłasza swój wynik tyle razy ile jest subów, no a tu jednak jest zupełnie inaczej. Czy ktoś wie mniej więcej czemu tak jest? Jakie założenie powoduje, że to nie działa tak jak mi się wydawało?