Angular не ожидает http-запроса - PullRequest
0 голосов
/ 25 мая 2019

В моем угловом приложении у меня есть пустота в службе, которая запрашивает данные из API, а затем обновляет некоторые переменные. В том же сервисе у меня также есть метод, который возвращает переменную, которую устанавливает первая функция. В первой функции я использую await, чтобы дождаться выполнения http-запроса, но вторая функция возвращает [обещание объекта] и не ожидает завершения HTTP-запроса. Как мне решить эту проблему?

async getData() {
   const req = new HttpRequest('POST', '/myapi', body, { headers: headers, reportProgress: true, responseType: 'text', });

   const event: HttpEvent<any> = await this.http.request(req).toPromise();

   /*
   Assigning some variables, the function doesn't return anything
   */

}

async getVariable() {
   await getData();

   return this.thevariabletoreturn
}

1 Ответ

0 голосов
/ 25 мая 2019

Попробуйте следующее:

getData() {
   const req = new HttpRequest('POST', '/myapi', body, { headers: headers, reportProgress: true, responseType: 'text', });

   this.http.request(req).toPromise().then(res => {
       const event: HttpEvent<any> =  res;
       /*
        Assigning some variables, the function doesn't return anything
       */
    });
}

async getVariable() {
   await getData();
   return this.thevariabletoreturn;
}

Обратите внимание, что вы должны рассмотреть возможность перемещения всех переменных, зависит от того, получаете ли вы данные из API, и поэтому я переместил ваш комментарий внутрь .then() блока

...