У меня есть два API, где в 1-ом API возвращаются данные, и, используя эти данные, мне нужно вызывать второй API каждые 2 секунды, пока второй API не вернет ответ как статус завершен.
Но теперь проблема заключается вКомпонент я называю первым API. Он только вызывает Один раз второй API. но мне нужно вызывать второй API, пока в ответе я не получу статус полного во втором ответе API, а также о том, как я могу перейти к другому экрану на основе второго статуса API.
В компоненте
if(this.data.FirstApi()){
this.router.navigate(['/second-screen']);
}
В Службах.
public FirstApi(){
let payload = this.getCIPayload();
this.getData(payload).subscribe(
(response) => {
if(response.status == 500){
console.log(response);
}
else{
this.runId = response[0].runId;
setTimeout(() => {
this.isComplete = false;
this.updateStatus()
}, 2000);
}
});
}
public updateStatus() {
let requestBody = {
pollRequests: [{
pollId: 1,
type: "get-status",
requestBody:[{
runId: this.runId,
response: ""
}]
}]
};
this.sendPollRequest(requestBody).subscribe(response => {
if(response.pollRequests[0].requestBody[0].response.requestUUIDStatus === 'Completed'){
this.isComplete = true;
clearTimeout(this.timer);
return true;
}
});
}
public sendPollRequest(requestBody){
let uri = this.environmentService.environment['test'] + 'abc/xyz';
return this.http.post(uri, JSON.stringify(requestBody)).map(res => res.json());
}