다음 서비스의 http 요청 결과를 여러 구성 요소와 공유하려고합니다. 내가 겪고있는 문제는 getMe() 함수에 대한 각 컴포넌트의 요청이 새로운 http 호출을 작성한다는 것입니다. MeService 서비스는 페이지의 루트 모듈에있는 제공자로만 선언되고 각 * .component.ts에 가져와야하므로 이는 서비스를 여러 번 다시 제공자로 재 선언한다는 (일반적인) 실수로 인한 것이 아닙니다 하위 구성 요소. 출력에서 알 수 있듯이 통화의 비동기 특성으로 인해 발생했을 가능성이 가장 높습니다. 그러나 틀린 경우 올바르게 수정합니다. 콘솔에서Angular2 서비스에서 복수 HTTP 요청 완화
import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class MeService {
private apiUrl = 'api/get/me';
private me: Object;
constructor(private http: Http) { }
getMe(): Promise<Object> {
console.log("OBSERVATION 1: " + this.me);
if (this.me) {
//Not sure if this is correct or not, I've never reached this block yet
return Promise.resolve(this.me)
} else {
return this.http.get(this.apiUrl)
.toPromise()
.then(response => {
console.log("OBSERVATION 2: " + this.me);
this.me = response.json();
console.log("OBSERVATION 3: " + this.me);
return this.me
})
.catch(this.handleError);
}
}
//Not relevant, just for completeness
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
}
출력 : 여기
서비스 코드이다. [object 객체]가 올바른 데이터로 채워져 있다는 것을 염두에두고이를 확인하고 명확성을 위해 JSON.Stringify()를 생략했습니다.OBSERVATION 1 : 미정
OBSERVATION 1 : 미정
OBSERVATION 2 : 미정
OBSERVATION 3 : Object 객체]
OBSERVATION 2 : Object 객체]
관찰 3 : [대상]
내가 믿는 것은 http 호출이 반환되기 전에 각도 구성 요소가로드되어 부트 스트래핑에서 여러 요청이 발생한다는 것입니다. 이 문제를 해결하기위한 올바른 최선의 방법은 무엇입니까?
정답으로 표시해 주므로이 작업 구현으로 이어졌습니다. [http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result- of-an-angular-2-http-network-call-in] (http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an -angular-2-http-network-call-in/36291681 # 36291681) –