角度服务呼叫如下所示,
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错误响应。
答案 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();
}