Как получить доступ к двум http-запросам на одной отправке синхронно в angular 8 - PullRequest
0 голосов
/ 09 февраля 2020

В этом методе я вызываю два http-запроса в callSubmit(), в этом onEmpSubmit() я добавил значения формы и на loadId() вызываю api, чтобы получить последний добавленный идентификатор сотрудника, так как JS асинхронное поведение его запуска loadId ( ) первый, который я хочу запустить после onEmpSubmit() component.ts

 onEmpSubmit(){
     return this.cs.callAPI(formData, "addEmp").subscribe(response => {

          if (response.status === 1) {
            this.myapp.showSuccessAlert = true;
            this.employeeId = response.userId;
            console.log(this.employeeId);
            this.myapp.successMsg = response.message;
            this.myapp.isLoadingResults = false;
            //this.isMapShow = false;
          }
         else {
          console.log("response.message" + response.message);
          this.myapp.showErrorAlert = true;
          this.myapp.errorMsg = response.message;
          this.myapp.isLoadingResults = false;
        }
      });
    }
  loadId(){
  return this.cs.getletestId().subscribe(res =>{
      if(res.status == 1){
        this.apiRes = res.data;
        console.log(res);
      }
    })
  }
  callSubmit(){
   this.onEmpSubmit();
   this.loadId();
  }

1 Ответ

1 голос
/ 09 февраля 2020

Существует несколько подходов, которые вы можете использовать:

  • Более простой подход - преобразовать эти наблюдаемые в Обещание и затем ожидать.
  onEmpSubmit(){
     return this.cs.callAPI(formData, "addEmp").toPromise();
  }

  loadId(){
  return this.cs.getletestId().toPromise();
  }

  async callSubmit(){
   const employeeResult = await this.onEmpSubmit();
   const id = await this.loadId();
  }

Вы можете сделать остальные операции позже с ожидаемыми результатами.

  • Вы можете использовать rx js наблюдаемый оператор, такой как concat, чтобы подписаться на наблюдаемые в порядке, как предыдущий завершается.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...