커뮤니티에 대한 나의 첫 번째 질문은 여기! 내가 않는 응용 프로그램에서 일하고 있어요 다음과 같은 방법으로 API와 통신간격이있는 RxJS 관찰자들
1 단계 : 요청 페이로드를 추가 요청 옵션을 생성 -> API에 게시 요청이
API는 요청 ID로 응답
2 단계 : 업데이트 요청 옵션, 페이로드로 요청 ID를 전송 -> POST 요청 API에
최종 응답 : response.json
이제 최종 응답에 요청 된 데이터에 따라 약간의 시간이 걸릴 수 있습니다. 평균 시간은 4 ~ 20 초 사이입니다.
observables를 사용하여 이러한 요청을 연결하려면 어떻게해야합니까? switchmap을 사용해 보았지만 실패했습니다 (아래 참조).하지만 간격을 어떻게 추가합니까? 매 4 초마다 폴링하고 응답시 해지 가능한 솔루션입니까? 위의 상황에서이 작업은 어떻게 수행됩니까?
EDIT1 : 최종 목표는 : 나는 각도 및 학습 관찰 가능한 새로운 해요, 그리고 난 .. 이런 맥락에서 관찰 도움 체인 않습니다 앞으로 최선의 방법이 무엇인지 이해하기 위해 찾고 있어요? 즉 초기 응답 이후에 일종의 간격이 있고 flatMap 을 사용하거나 간격이있는 폴링을 사용하여 보고서가 준비되어 있는지 확인하십시오. 여기
내가 가진 무엇 지금까지수출 클래스 reportDataService { 생성자 (개인 _HTTP : HTTP) {} 내 구성 요소의
headers: Headers;
requestoptions: RequestOptions;
payload: any;
currentMethod: string;
theCommonBits() {
//create the post request options
// headers, username, endpoint
this.requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: url,
headers: newheaders,
body: JSON.stringify(this.payload)
})
return this.requestoptions;
}
// report data service
reportService(payload: any, method: string): Observable<any> {
this.payload = payload;
this.currentMethod = method;
this.theCommonBits();
// fetch data
return this._http.request(new Request(this.requestoptions))
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
무엇 사용에 대한
fetchData() {
this._reportService.reportService(this.payload, this.Method)
.switchMap(reportid => {
return this._reportService.reportService(reportid, this.newMethod)
}).subscribe(
data => {
this.finalData = data;
console.info('observable', this.finalData)
},
error => {
//console.error("Error fetcing data!");
return Observable.throw(error);
}
);
}
당신의 질문은 저에게 아주 불분명 한 것처럼 보입니다. 무엇을 성취하려고합니까? 2 회의 API 호출을 연결하기 만하면됩니까? 아니면 주기적으로 호출해야합니까? –
시간 내 주셔서 감사합니다! 내 최종 목표를 추가했습니다. 앞으로 나아갈 수있는 최선의 방법을 찾으려고합니다.이 방법을 사용하거나 다른 방법으로 연결을 사용하십시오. 모든 새로운 요청에 대해서만이 서비스를 호출해야합니다. – anilZ