【发布时间】:2021-01-11 14:03:24
【问题描述】:
wait for asynchronous functions to finish in Angular 我的组件“ship-list”想要从后端服务器获取列表。所以,我做了一个服务 (config.service.ts)
import { Injectable, OnInit } from '@angular/core';
import { Observable, throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class ConfigService {
url = 'http://192.168.1.26:8080/';
constructor(private http:HttpClient) { }
async getShipList() {
this.url = this.url + 'ships';
this.http
.get<any[]>(this.url)
.subscribe(
(response) => {
console.log("Response : ", response);
return (response);
},
(error) => {
console.log("Error ! : " + error);
}
);
}
}
然后,在我的组件中,在 ngOnInit 中,我调用此函数并等待结果:
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { faCartArrowDown } from '@fortawesome/free-solid-svg-icons';
import { faChartArea } from '@fortawesome/free-solid-svg-icons';
// Services :
import { ConfigService } from '../config/config.service';
@Component({
selector: 'app-ship-list',
templateUrl: './ship-list.component.html',
styleUrls: ['./ship-list.component.scss']
})
export class ShipListComponent implements OnInit {
// Icons
faChartArea = faChartArea;
faCartArrowDown = faCartArrowDown;
// Var
searchText: any;
shipList: any;
url = this.configService.url;
constructor(private http:HttpClient, private configService: ConfigService) { }
async ngOnInit() {
this.shipList = await this.configService.getShipList();
console.log(this.shipList);
}
}
问题是,我的组件并没有真正等待我的服务获取数据。我不知道我做错了什么。
提前感谢您的帮助!
【问题讨论】:
标签: angular promise angular-httpclient