是否可以两次调用 <header>
<div class="container">
<div class="row">
<div class="col-lg-12">
<img class="img-responsive" src="img/profile.png" alt="">
<div class="intro-text">
<span class="name">HEADING</span>
<hr class="star-light">
<span class="skills">TEXT</span>
</div>
</div>
</div>
</div>
</header>
方法?
我正在尝试构建api工厂,它在工厂中保存数据,但每个ajax调用可以由不同组件使用该数据。
工厂
Subscribe
测试组件,再次调用export class api {
result = [];
constructor (protected http: Http) { }
getData ()
{
return this.http.get('./friends.json').map((res: Response) => res.json()).subscribe(res => this.result = res);
}
}
方法
subscribe
答案 0 :(得分:3)
您可以返回新的Observable包装器。这样的事情应该有效:
import {Observable} from 'rxjs/Observable'
export class api {
result = [];
constructor (protected http: Http) { }
getData () {
return new Observable(observer => {
this.http.get('./friends.json')
.map((res: Response) => res.json())
.subscribe(res => {
this.result = res;
observer.next(res);
observer.complete();
});
});
}
}
答案 1 :(得分:3)
如果你想一次发出HTTP请求,并将结果分享给多个订阅者,那么我建议使用一个可连接的观察者来发布和重放最后发出的值:
this.observable = http.get('...').map(t=> t.json()).publishReplay().refCount();
每个新订阅者都将重放最后发出的值,而不会发出新的HTTP请求。
此答案与此SO question and answer类似。