Angular不等待HTTP请求

时间:2019-05-25 17:17:55

标签: angular http asynchronous promise

在我的角度应用程序中,服务中有一个空白,该空白从api请求数据,然后更新一些变量。在同一服务中,我还有一个返回第一个函数设置的变量的方法。我在第一个函数中使用await等待http请求执行,但是第二个函数返回[Object promise]并且不等待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 :(得分:0)

尝试以下操作:

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()块内移动了您的注释