0
私の角度サービスが観測可能に戻ります。しかし、私がそれを購読するたびに、それは再び全部呼び出されています。この特定の例では、複数のオブザーバーで1回ではなく、10回ユーザーを取得する要求が送信されていることがわかります。RxJsで既存の観測可能なものを購読する
期待される動作:観察可能に作成し、購読します。 1つの要求のみが送信され、すべてのサブスクリプションは同じ値を受け取ります。
@Injectable()
class ExampleService {
constructor(private http: Http) { }
read() {
return this.http.get('https://api.github.com/users');
}
}
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<button (click)='test()'>Test</button>
</div>
`,
})
export class App {
name:string;
subscription: Observable<any>;
constructor(private exampleService: ExampleService) {
this.name = `Angular! v${VERSION.full}`
}
test() {
for (let x = 0; x < 10; x++) {
if (this.subscription) {
console.log('Using existing subscription');
this.subscription.subscribe(
response => {
console.log('From another')
})
} else {
this.subscription = this.exampleService.read();
this.subscription.subscribe(
response => {
console.log('From originalSubscription');
this.subscription = null;
});
}
}
}
}
ヘルプがありますか?
'.publishReplay()参照カウントを();' 'それは.share'と同等ではないですか。 – Maxime
閉じる、 'share'エイリアス' .publish()。refCount() 'http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-share – subhaze