我有这样的功能;
getList() {
this.http.get(this.rootURL )
.toPromise().then(res => { this.mimeList = res as Mime[];
this.arrayLenght = this.mimeList.length;
});
return this.arrayLenght;
}
在此函数中,我想返回mimeList
数组的长度。变量arrayLength
用于存储长度值,并在这样的类的主体中声明;
export class MimeService {
.
.
.
.
arrayLenght = 0;
.
.
.
.
.
.
}
当我在console.log
正文中放置this.http.get(this.rootURL ).toPromise().then
语句时,它会打印出数组的实际长度。因此,这意味着检索此数组的长度没有问题。但是,在另一个我正在调用getList()
函数的类中;
export class AssetListComponent implements OnInit {
.
.
.
.
.
.
ngOnInit() {
this.service.getList();
this.serviceCountry.getList();
this.databaseLength = this.serviceMime.getList();
}
.
.
.
.
.
.
}
返回值是“ 0” ,而不是数组的实际长度。我在运行console.log(this.databaseLength)
时可以看到这一点。
我哪里错了?我是Typescript的新手,很可能这个问题的答案很简单。预先感谢。
答案 0 :(得分:2)
async getList() {
const res = await this.http.get(this.rootURL ).toPromise();
this.mimeList = await res as Mime[];
this.arrayLenght = this.mimeList.length;
return this.arrayLenght;
}
像这样更改您的getList()函数。您应该等到您的诺言得到解决。在另一个类中,在调用getList();之前添加await关键字。
this.databaseLength = await this.serviceMime.getList();