Angular 2.进行服务调用,直到API返回数据

时间:2019-06-18 09:53:41

标签: angular angular2-services angular-httpclient

角度服务呼叫如下所示,

SearchAssets(searchAssetsModel: SearchAssetsModel): Observable<any> {
    return this.httpClient.post<any>(this.webApiUrl + "SearchAssets/SearchAssets/", searchAssetsModel);
}

并且在我的组件中,正在订阅如下所示的服务,

this.searchAssetsService.SearchAssets(searchAssetsModel).subscribe(
  (data) => {}
)

确定API将在服务调用2-3分钟后返回数据,但是现在的问题是Angular服务没有等到API返回数据。等待1.5分钟后将给出500错误响应。

4 个答案:

答案 0 :(得分:0)

尝试为HTTP请求设置超时:https://stackoverflow.com/a/52188748/6603599

另外,等待2-3分钟以等待API请求也没有顺序。您可以尝试将数据作为Stream获取,以便可以为要添加到Stream中的每个新元素更新UI。

答案 1 :(得分:0)

您在下面说的话是不正确的。

  

...问题是Angular服务没有等到API返回   数据。等待1.5会给出500错误响应   分钟。

500错误是服务器端的内部错误,这意味着服务器端存在错误。可能是编码问题,或者您的api在长时间会话中返回错误。

角度Http服务与您的500错误无关。您可以使用其他客户端来检查api结果(例如Postman)来进行测试。

无论如何,一旦修复了服务器端,问题就消失了。

查看this developer.mozilla.org link,了解有关500错误的更多详细信息。下面的文本来自此链接:

  

“超文本传输​​协议(HTTP)500内部服务器错误”服务器错误响应代码表示服务器遇到意外状况,阻止其满足请求。

答案 2 :(得分:-1)

您可以使用 async await 来使服务调用等待。

答案 3 :(得分:-1)

您可以尝试使用Promise并异步运行代码,例如:

async SearchAssets(searchAssetsModel: SearchAssetsModel: Promise<any> {
  await return this.httpClient.post<any>(this.webApiUrl+"SearchAssets/SearchAssets/", searchAssetsModel).
  toPromise();
}