を使用しての行動: を 'ちょっと'一つの観察可能な、複数の加入者、異なる場合、別のシェア()2人の加入者が観測を購読するとrxjs5
:
let s = Observable.interval(1000).take(2).do(x => console.log('hey')); s.subscribe(n => console.log('subscriber 1 = ' + n)); s.subscribe(n => console.log('subscriber 2 = ' + n));
コンソールには、次のログ'加入者1 = 0' 'ちょっと' '加入者2 = 0' 'ちょっと' '加入者1 = 1' 'ちょっと' '加入者2 = 1'
.share()
使用:
let s = Observable.interval(1000).take(2).do(x => console.log('hey')).share();
s.subscribe(n => console.log('subscriber 1 = ' + n));
s.subscribe(n => console.log('subscriber 2 = ' + n));
コンソールログ:
'ちょっと' '加入者1 = 0' 'ちょっと' 「加入者 '2 = 1加入者1 = 0 ' '加入者2 = 1 '
これで、同じデータを複数のユーザに共有できました。
let s = Observable
.from([-1, 0, 1, 2, 3])
.filter(v => v > 0)
.do(v => console.log('from', v));
s.filter(v => v % 3 === 0)
.subscribe(v => console.log('---0---', v));
s.filter(v => v % 3 === 1)
.subscribe(v => console.log('---1---', v));
s.filter(v => v % 3 === 2)
.subscribe(v => console.log('---2---', v));
ログ:
'から' 1 'から'、2 'から'、3 '--- 0 ---'、3 '' から次のテストを実行する 、1 '--- 1 ---'、1 'from'、2 'from'、3 'from'、2 '--- 2 ---'、2 'from'、3
:let s = Observable .from([-1, 0, 1, 2, 3]) .filter(v => v > 0) .do(v => console.log('from', v)) .share(); s.filter(v => v % 3 === 0) .subscribe(v => console.log('---0---', v)); s.filter(v => v % 3 === 1) .subscribe(v => console.log('---1---', v)); s.filter(v => v % 3 === 2) .subscribe(v => console.log('---2---', v)); });
はもう一度、私はshare()
を使用しました
share()
を使用したにもかかわらず、fromデータは、share()
(1から2のうち3つがそれぞれ3回記録され、各サブスクライバごとに1つずつ記録されます)を除いた以前の試行とまったく同じ方法で記録されました。
したがって、これらの例の観測値の違いは何ですか?
2番目のケースでデータを共有するにはどうすればよいですか?