Вызывайте второй API каждые 2 секунды, используя данные первого API в качестве ввода для второго API в Angular8 - PullRequest
0 голосов
/ 31 октября 2019

У меня есть два 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());
  }
...