如何处理来自慢速服务器的响应
How to handle response from slow server
我必须从服务器获取一些数据。服务器的响应非常缓慢。我想将响应存储在一个数组中,以便它可以显示在模板中。目的是延迟将响应存储到数组中,直到服务器 returns response
我已经尝试过 setTimeout() 但是失败了
Ts文件
ticketdetails()
{
this.funName = 'online_service';
var url = { url:'bookingdetails?username=....&password=....&bookingCode=' + this.id};
console.log(url);
this.myservice.online_service(this.funName,url).subscribe(response => {
if (response.code === '1')
{
this.bookDetails = response;
console.log('Book details inside function', this.bookDetails);
}
})
console.log('Book details outside function' , this.bookDetails)
}
在控制台中,
函数内的书籍详情显示服务器的响应结果
但,
函数外的书籍详细信息显示为 null 。
- isResponce: boolean =false;
ticketdetails()
{
this.funName = 'online_service';
var url = { url:'bookingdetails?username=....&password=....&bookingCode=' +
this.id};
console.log(url);
this.myservice.online_service(this.funName,url).subscribe(response =>
{
if (response.code === '1')
{
this.isResponce = true;
this.bookDetails = response`enter code here`;
console.log('Book details inside function', this.bookDetails);
}
})
我认为您应该在函数调用的回调中完成所有 operations/assignments。
由于调用将是异步的,因此在您没有从服务器获得响应之前,您的进一步代码将不会被执行。
API 调用之后的代码将被执行,所以我认为 API 调用的设计方式应该是将其响应包装在回调中,然后再使用。
您在 API 调用之后编写的代码将在该行之后立即执行,它不会等待响应到达,因为这是 Java 脚本的明显性质。
示例:休息服务
customHttpDefaultOptions= {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
postRestCall(requestBody, data) {
this.httpClient.post(apiURL, requestBody, this.customHttpDefaultOptions).pipe(retry(1))
.subscribe(response => {
data(response);
}, error => data(this.handleError(error)));
}
所以在这里你也应该做一些事情,一旦响应到达,它将被包装在回调中,你可以稍后从回调中使用它。
样本:
this.restService.postRestCall(requestBody, data => {
this.his.bookDetails = data;
});
因此,如果您已经做了某种休息服务,那么您也可以重新使用 API 调用机制,而不是编写 api 调用的样板代码。
完全不是慢的问题
我必须从服务器获取一些数据。服务器的响应非常缓慢。我想将响应存储在一个数组中,以便它可以显示在模板中。目的是延迟将响应存储到数组中,直到服务器 returns response
我已经尝试过 setTimeout() 但是失败了
Ts文件
ticketdetails()
{
this.funName = 'online_service';
var url = { url:'bookingdetails?username=....&password=....&bookingCode=' + this.id};
console.log(url);
this.myservice.online_service(this.funName,url).subscribe(response => {
if (response.code === '1')
{
this.bookDetails = response;
console.log('Book details inside function', this.bookDetails);
}
})
console.log('Book details outside function' , this.bookDetails)
}
在控制台中, 函数内的书籍详情显示服务器的响应结果 但, 函数外的书籍详细信息显示为 null 。
- isResponce: boolean =false;
ticketdetails()
{
this.funName = 'online_service';
var url = { url:'bookingdetails?username=....&password=....&bookingCode=' +
this.id};
console.log(url);
this.myservice.online_service(this.funName,url).subscribe(response =>
{
if (response.code === '1')
{
this.isResponce = true;
this.bookDetails = response`enter code here`;
console.log('Book details inside function', this.bookDetails);
}
})
我认为您应该在函数调用的回调中完成所有 operations/assignments。 由于调用将是异步的,因此在您没有从服务器获得响应之前,您的进一步代码将不会被执行。
API 调用之后的代码将被执行,所以我认为 API 调用的设计方式应该是将其响应包装在回调中,然后再使用。 您在 API 调用之后编写的代码将在该行之后立即执行,它不会等待响应到达,因为这是 Java 脚本的明显性质。
示例:休息服务
customHttpDefaultOptions= {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
postRestCall(requestBody, data) {
this.httpClient.post(apiURL, requestBody, this.customHttpDefaultOptions).pipe(retry(1))
.subscribe(response => {
data(response);
}, error => data(this.handleError(error)));
}
所以在这里你也应该做一些事情,一旦响应到达,它将被包装在回调中,你可以稍后从回调中使用它。
样本:
this.restService.postRestCall(requestBody, data => {
this.his.bookDetails = data;
});
因此,如果您已经做了某种休息服务,那么您也可以重新使用 API 调用机制,而不是编写 api 调用的样板代码。
完全不是慢的问题