我正在编写一个Angular应用程序。我有一个服务,提出这样的http请求:
export class PingService {
constructor(
private http: HttpClient) { }
ping() {
return this.http.get<{ip, type}>(this.apiRoutes.pingService);
}
}
我在一个组件中调用此服务:
login(credentials) {
this.invalidLogin = false;
this.pingService.ping()
.subscribe(data => {
this.apiConfigService.changeNetwork(data.type);
},
error => {
throw(error);
});
// MORE THINGS TO DO //
我想在执行pingService.ping()
之前等待// MORE THINGS TO DO //
完成。我该如何等待服务完成?
答案 0 :(得分:1)
login(credentials) {
this.invalidLogin = false;
this.pingService.ping()
.subscribe(data => {
this.apiConfigService.changeNetwork(data.type);
--> To here // MORE THINGS TO DO //
},
error => {
throw(error);
});
--> Move this // MORE THINGS TO DO //
答案 1 :(得分:1)
login(credentials) {
this.invalidLogin = false;
this.pingService.ping()
.subscribe(data => {
this.apiConfigService.changeNetwork(data.type);
this.doMoreThings();
},
error => {
throw(error);
});
}
doMoreThings() {
console.log('I am doing more things');
}
答案 2 :(得分:0)
不推荐使用Javascript进行同步,尤其是在进行http请求时。人们写的方式是最好的方法。
答案 3 :(得分:0)
我想补充一些其他答案。
大多数情况下,您不应该在任何JavaScript应用程序中“等待http请求”,因为它可能会阻止UI。想象一下,当连接丢失或网络不良时,您的用户会对您的应用执行某些操作。这将导致UI被阻止,直到请求结束或超时,这是非常糟糕的经历。